JArray 替换条件匹配的值
Posted
技术标签:
【中文标题】JArray 替换条件匹配的值【英文标题】:JArray replace value where condition match 【发布时间】:2020-12-01 15:44:04 【问题描述】:在 JArray 中用空字符串替换“NaN”的最佳方法是什么?
这是我从远程服务器获得的示例响应
响应 1:
["id":-384958505,"Value1":"NaN","id":426608375,"Value1":10,"id":426608376,"Value1":"NaN"]
响应 2:
["id":-384958505,"Value1":"NaN","Age":"NaN","id":426608375,"Value1":10,"Age":"NaN","id":426608376,"Value1":"NaN","Age":25]
在调用远程服务器之前,我不知道有多少键或键名。我目前正在使用 C# 和 NewtonsonftJson。
【问题讨论】:
@stuartd -- 如果有一个名为“NaN”的属性,而不仅仅是一个值呢? 您确定要替换它们吗? NaN 是浮点数的合法值,但空字符串不是。似乎替换这些值只会妨碍反序列化。 这似乎是一个 X/Y 问题 【参考方案1】:您可以使用 Newtonsoft 的 Json.NET LINQ 功能和 Replace
:
var parsed = JArray.Parse(json);
var en = parsed
.Descendants()
.OfType<JValue>()
.Where(d => d.Value<string>() == "NaN");
foreach (var element in en)
element.Replace(JValue.FromObject(string.Empty));
【讨论】:
@Andy 不,不会的。 @Andy 你也可以使用d.Type == JTokenType.String
过滤器来缩小搜索范围。以上是关于JArray 替换条件匹配的值的主要内容,如果未能解决你的问题,请参考以下文章