使用Newtonsoft.Json添加节点层次结构

时间:2018-04-24 17:01:35

标签: c# json json.net

我有一个字符串格式的json,例如

{"hello":"Sam"}

我想在根级别添加一个简单的嵌套对象,例如

{"hello":"Sam", "level1":{"level2":{"level3":"myValue"}}}

如何使用Newtonsoft.json以编程方式执行此操作,听起来非常简单,但我被卡住了。

我试过这个,但不知道该怎么写" level2节点?":

var s = @"{""Hello"":""Sam""}";
var jobj = JObject.Parse(s); 
jobj.Add("level1", "level2 node?");
var json2 = jobj.ToString();

我可能应该使用下面的Add重载方法,它采用" JToken": https://www.newtonsoft.com/json/help/html/M_Newtonsoft_Json_Linq_JObject_Add.htm

但我不知道这个通用的JToken是什么,或者如何创建它的实例。

如果应该完成“最里面的”,“最里面的第一个”或“#34”。

1 个答案:

答案 0 :(得分:2)

使用无参数构造函数创建新的VirtualProtect。您可以像填充父项的属性一样填充新的子对象:

malloc

或者您可以使用collection initializer syntax,这可能是因为free实施JObject并且方法var json = @"{""hello"":""Sam""}"; var jobj = JObject.Parse(json); var level2 = new JObject(); level2["level3"] = "myValue"; var level1 = new JObject(); level1["level2"] = level2; jobj["level1"] = level1;

JObject

您无需明确创建System.IEnumerable。它有Add(String, JToken)个转换运算符,用于很长的值类型列表。这些课写得很好;他们倾向于“做你的意思”。但是,如果您真的想要,可以调用静态方法var json = @"{""hello"":""Sam""}"; var jobj = JObject.Parse(json); jobj["level1"] = new JObject { { "level2", new JObject { { "level3", "myValue" } } } }; 。通过右键单击Visual Studio中的JSON.NET类并从上下文菜单中选择“转到定义”,您可以学到很多东西。从字面上看,我学到了关于JSON.NET这个领域的一切,我在过去的十分钟里通过“Go To Definition”和试错来了解到。