【问题标题】:How to append Jobject to the Jarray of Jproperty?如何将Jobject附加到Jproperty的Jarray?
【发布时间】:2021-12-28 15:32:53
【问题描述】:

我正在创建新的 Jobject,

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”的右侧。我可以尝试或寻找什么?

【问题讨论】:

    标签: c# json asp.net-web-api linq-to-sql json.net


    【解决方案1】:

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

    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"
        }
      ]
    }
    

    【讨论】:

      【解决方案2】:

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

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

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

      Try it online

      【讨论】:

        【解决方案3】:

        您可以初始化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"
                }
              ]
        }
        
           
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2017-01-22
          • 1970-01-01
          • 2021-12-18
          • 2021-12-18
          • 1970-01-01
          • 1970-01-01
          • 2019-03-20
          • 1970-01-01
          相关资源
          最近更新 更多