【问题标题】:Jobject using .Add in a nested elementJobject 在嵌套元素中使用 .Add
【发布时间】:2021-12-22 22:07:14
【问题描述】:

如果我有一个 Json 对象:

{ 
"data":{
      "SomeArray":[
         {
            "name":"test1"
         },
         {
            "name":"test2"
         },
         {
            "name":"test3"
         }
      ]
   }
}

这个对象是使用Jobject.Parse(jsonString);解析的

如何在data 下添加一个字段,该字段保存数组中要转发给另一个系统的项目的计数。计数已经计算过了。我只需要像这样添加它:

{ 
"data":{
      "Count" : 3,
      "SomeArray" : [

我试过了

myJObject["data"].Add("Count",count);

但是 .Add 在这里不起作用。我看到的唯一选项是AddAfterSelf()

有没有办法只添加一个简单的键值对而不必先创建Jproperty 并使用AddAfterSelf 添加它?

或者是正确的方式:x["Data"].AddAfterSelf(new JProperty("Count", count));

【问题讨论】:

    标签: c# json


    【解决方案1】:

    这里的问题是myJObject["data"] 返回一个JToken,它是JObject 的基类。

    如果您确定“数据”将始终是一个对象,您可以执行以下操作

    var data = myJObject.GetValue("data") as JObject;
    data.Add("Count",120);
    

    【讨论】:

    • 我如何将数据添加回原始 JObject,只需执行 myJObject["data"] = data;
    • @Bike_dotnet 你不应该这样做。它会自动出现在myJObject,因为它是被引用的数据类型。
    【解决方案2】:

    您可以通过将您从myJObject["data"] 获得的JToken 转换为JObject 来做到这一点。例如:

    var data = (JObject)myJObject["data"];
    data.Add("Count", 3);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-02-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-05-11
      相关资源
      最近更新 更多