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 替换条件匹配的值的主要内容,如果未能解决你的问题,请参考以下文章

从jarray中删除指定元素的问题

如何结合Jarray?

Newtonsoft JSON - 在JArray中创建JArray

如何正确地将 JArray 解析为字符串集合

在 JArray 中使用 LINQ

我想将c#列表转换为JArray