首页 > 解决方案 > C# qyery 并更新 Json.Linq.Object 中的项目

问题描述

我有以下动态对象,并想更新对象中的特定令牌。如何在 C# 中实现这一点。

在此处输入图像描述

我的json如下: 在此处输入图像描述

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

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

                JObject template = JObject.Parse(assignment.Template.ToString());
                var learner = JsonConvert.DeserializeObject<LearnerTemplate>(template.ChildTokens[3]);

谢谢

标签: c#json.net

解决方案


您可以根据需要使用SelectToken函数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"));
    }
}

推荐阅读