C#qyery并更新Json.Linq.Object中的一项

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

我有以下动态对象,希望更新对象中的特定标记。如何在C#中实现这一点

我的json如下所示:

我正在寻找更新template.learner.name对象的方法

以下是我尝试过的,但它的抛出错误:

                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[],但是当我使用更新的代码时它起作用了。希望这是正确的语气