C# 使用Newtonsoft.Json添加节点层次结构
例如,我有一个字符串格式的jsonC# 使用Newtonsoft.Json添加节点层次结构,c#,json,json.net,C#,Json,Json.net,例如,我有一个字符串格式的json {"hello":"Sam"} 例如,我想在根级别添加一个简单的嵌套对象 {"hello":"Sam", "level1":{"level2":{"level3":"myValue"}}} 如何使用Newtonsoft.json以编程方式实现这一点,听起来很简单,但我被卡住了 我尝试过这个,但不知道在“level2节点”写什么: 我可能应该使用下面的Add重载方法,该方法采用“JToken”: 但我不知道这个通用JToken是什么,也不知道如何创建它的实
{"hello":"Sam"}
例如,我想在根级别添加一个简单的嵌套对象
{"hello":"Sam", "level1":{"level2":{"level3":"myValue"}}}
如何使用Newtonsoft.json以编程方式实现这一点,听起来很简单,但我被卡住了
我尝试过这个,但不知道在“level2节点”写什么:
我可能应该使用下面的Add重载方法,该方法采用“JToken”:
但我不知道这个通用JToken是什么,也不知道如何创建它的实例
如果层次结构的add应该是“最里面的第一个,或者最外面的第一个”。使用无参数构造函数创建一个新的
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)
:
您不必显式地创建
JToken
。它有一长串值类型的公共静态隐式
强制转换运算符。这些课程写得很好;他们倾向于“按你的意思做”。但是,如果确实需要,可以调用静态方法JToken.FromObject(objecto)
。在Visual Studio中右键单击JSON.NET类并从上下文菜单中选择“转到定义”,可以学到很多东西。实际上,我在JSON.NET这个领域学到的一切,我在过去十分钟里通过“转到定义”和反复试验学到的 使用无参数构造函数创建一个新的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)
:
您不必显式地创建
JToken
。它有一长串值类型的公共静态隐式
强制转换运算符。这些课程写得很好;他们倾向于“按你的意思做”。但是,如果确实需要,可以调用静态方法JToken.FromObject(objecto)
。在Visual Studio中右键单击JSON.NET类并从上下文菜单中选择“转到定义”,可以学到很多东西。实际上,我在JSON.NET这个领域学到的一切,我在过去十分钟里通过“转到定义”和反复试验学到的 请显示您尝试的内容。如果它已经是字符串格式,只需将level1对象字符串化,然后连接字符串。“连接字符串”?这不是库帮助您的吗?请展示您尝试过的内容。如果它已经是字符串格式,只需将level1对象字符串化,然后连接字符串。“连接字符串”?这不是图书馆帮助你的吗?
var json = @"{""hello"":""Sam""}";
var jobj = JObject.Parse(json);
jobj["level1"] = new JObject
{
{ "level2", new JObject
{
{ "level3", "myValue" }
}
}
};