【问题标题】:JArray replace value where condition matchJArray 替换条件匹配的值
【发布时间】: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 问题

标签: c# arrays json.net


【解决方案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 过滤器来缩小搜索范围。
猜你喜欢
  • 2022-07-08
  • 2018-02-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-04-15
  • 1970-01-01
  • 2018-05-14
  • 2022-12-09
相关资源
最近更新 更多