如何将 Jobject 添加到 Jproperty 的 Jarray 中?

How to append Jobject to the Jarray of Jproperty?

我正在创建新的作业对象,

var testresult = new JObject(new JProperty("Name", "John"),
                    new JProperty("Nums", new JArray())); 

结果是:

{
  "Name": "John",
  "Nums": []
}

我正在尝试在 Jproperty“Nums”的 JArray 中添加另一个 JObject。

{
      "Name": "John",
      "Nums": [{"tl1": "tr1"}, {"tl2": "tr2"}]
 }

我试过 testresult.Property.Add AddAfterSelf 风格,但我认为我的主要问题是我无法访问 JProperty“Nums”的右侧。我可以尝试或寻找什么?

JArray 有一个 Add 方法。您可以像这样访问 JArray

JArray myArray = (JArray)testresult["Nums"];
myArray.Add(new JObject(new JProperty("tl1", "tr1")));

我假设对象应该是 {"tl1":"tr1"},因为 {"tl1", "tr1"} 不是有效的 JSON 对象。

Try it online

您可以初始化 JArray 或使用 Add:

        JArray arr = new JArray()
        {
            new JObject()
            {
                new JProperty("tl1", "tr1")
            }
        };
        
        arr.Add(new JObject()
        {
            new JProperty("tl2", "tr2")
        });

        JObject obj = new JObject()
        {
            new JProperty("Name", "John"),
            new JProperty("Nums", arr)
        };

        Console.WriteLine(obj);

产生:

{
   "Name": "John",
   "Nums": [
        {
          "tl1": "tr1"
        },
        {
          "tl2": "tr2"
        }
      ]
}

   

您可以在一行中创建所有内容

var testresult = new JObject(new JProperty("Name", "John"), new JProperty("Nums", new JArray(
new JObject(new JProperty("tl1", "tr1") ),new JObject(new JProperty("tl2", "tr2") ))));

或者如果你以后想添加新项目,你也可以在一行中完成

testresult["Nums"]=new JArray(new JObject(new JProperty("tl1", "tr1") ), 
new JObject(new JProperty("tl2", "tr2")));

或者,如果您想将新项目的数组添加到现有数组中,您可以使用 Merge

((JArray) testresult["Nums"]).Merge(new JArray(new JObject(new JProperty("tl1", "tr1")), new JObject(new JProperty("tl2", "tr2"))));

如果要向数组中再添加一项,则添加

((JArray) testresult["Nums"]).Add( new JObject(new JProperty("tl1", "tr1")));

结果

{
  "Name": "John",
  "Nums": [
    {
      "tl1": "tr1"
    },
    {
      "tl2": "tr2"
    }
  ]
}