无法将Newtonsoft.Json.Linq.JProperty添加到Newtonsoft.Json.Linq.JArray

时间:2018-05-24 17:09:48

标签: c# .net json

我正在尝试重新创建这个json:

{
"request": {
        " TestRequest": {
            "OrderID": {
                "orderNumber": "12345",
                "category": "ABC"
            },
            "SecondCategory": "DEF"
        }
    }
}

我这样做:

JObject jObject = new JObject(new JProperty("request",
                  new JObject(
                    new JProperty("TestRequest",
                    new JObject(
                        new JProperty("OrderID",
                            new JProperty("orderNumber", "12345"),
                            new JProperty("category", "ABC")),
                            new JProperty("SecondCategory", "DEF")))))
                );

但是我收到了这个错误:

  

无法将Newtonsoft.Json.Linq.JProperty添加到Newtonsoft.Json.Linq.JArray

我做错了什么?我该如何解决?任何帮助将不胜感激。

谢谢。

1 个答案:

答案 0 :(得分:2)

如果你只是制作一个对象,这会容易得多:

var req = new
{
    request = new
    {
        TestRequest = new
        {
            OrderID = new
            {
                orderNumber = "12345",
                category = "ABC"
            },
            SecondCategory = "DEF"
        }
    }
};

var reqSer = JsonConvert.SerializeObject(req, Formatting.Indented);

输出:

{
  "request": {
    "TestRequest": {
      "OrderID": {
        "orderNumber": "12345",
        "category": "ABC"
      },
      "SecondCategory": "DEF"
    }
  }
}

匿名对象不必具有与之关联的具体类型,只需创建几乎与您显示的JSON一样的格式,然后将其正常序列化。