使用Newtonsoft.Json拼接或者组装Json
a为用匿名函数嵌套得到的json串 ;将a转为JObject用于下面的组装
var a = JsonConvert.SerializeObject(new { test1 = new string[] { "1", "2", "3" }, test2 = "qwew", test3 = 1234, test4 = new { children1 = false } }); var b = JObject.Parse(a);
Console.WriteLine(b.ToString());
结果:
{ "test1": [ "1", "2", "3" ], "test2": "qwew", "test3": 1234, "test4": { "children1": false } }
如果是简单节点拼接如下
var level2 = new JObject(); level2["level3"] = "myValue"; var level1 = new JObject(); level1["level2"] = level2; b["level1"] = level1;
结果:
{ "test1": [ "1", "2", "3" ], "test2": "qwew", "test3": 1234, "test4": { "children1": false }, "level1": { "level2": { "level3": "myValue" } } }
如果里面包含数组或者匿名函数:
var c = JToken.FromObject(new { testa = new string[] { "1", "2", "3" }, testb = "qwew", testc = 1234, testd = true }); b.Add("testnew", c);
结果:
{ "test1": [ "1", "2", "3" ], "test2": "qwew", "test3": 1234, "test4": { "children1": false }, "testnew": { "testa": [ "1", "2", "3" ], "testb": "qwew", "testc": 1234, "testd": true } }
全部组装完成的Json
{ "test1": [ "1", "2", "3" ], "test2": "qwew", "test3": 1234, "test4": { "children1": false }, "level1": { "level2": { "level3": "myValue" } }, "testnew": { "testa": [ "1", "2", "3" ], "testb": "qwew", "testc": 1234, "testd": true } }