C#qyery并更新Json.Linq.Object中的一项
我有以下动态对象,希望更新对象中的特定标记。如何在C#中实现这一点 我的json如下所示: 我正在寻找更新template.learner.name对象的方法 以下是我尝试过的,但它的抛出错误:C#qyery并更新Json.Linq.Object中的一项,c#,json.net,C#,Json.net,我有以下动态对象,希望更新对象中的特定标记。如何在C#中实现这一点 我的json如下所示: 我正在寻找更新template.learner.name对象的方法 以下是我尝试过的,但它的抛出错误: JObject template = JObject.Parse(assignment.Template.ToString()); var learner = JsonConvert.DeserializeObject<Learn
JObject template = JObject.Parse(assignment.Template.ToString());
var learner = JsonConvert.DeserializeObject<LearnerTemplate>(template.ChildTokens[3]);
JObject-template=JObject.Parse(assignment.template.ToString());
var learner=JsonConvert.DeserializeObject(template.ChildTokens[3]);
谢谢您可以使用所需的JPath
功能
这里的技巧是您需要到达父级,然后更改子级值
我创建了一个工作版本
这里有代码:
using System;
using Newtonsoft.Json.Linq;
public class Program
{
public static void Main()
{
var json = JToken.Parse(@"
{
'template' :
{
'learner' : {
'email' : 'a@b.com'
}
}
}
");
json.SelectToken("template.learner")["email"] = "changed";
Console.WriteLine(json.SelectToken("template.learner.email"));
}
}
看起来你已经用动态对象攻击了你的腿。将
模板反序列化。ChildTokens[3]
到c#类对象,更改该类对象的属性,将其序列化回json,将其分配回模板。ChildTokens[3]
@ChetanRanpariya I'm get'“无法对空引用执行运行时绑定”'当我尝试反序列化到C#类对象时,当我尝试var learner=JsonConvert.DeserializeObject(assignment.Template.ChildTokens[3]);为什么你不能JsonConvert.DeserializeObject((assignment.Template.ChildTokens[3])
@ChetanRanpariya谢谢。我没有得到ChildTokens[],但是当我使用更新的代码时它起作用了。希望这是正确的语气