c# - C# qyery 并更新 Json.Linq.Object 中的项目
问题描述
我有以下动态对象,并想更新对象中的特定令牌。如何在 C# 中实现这一点。
我正在寻找一种更新 template.learner.name 对象的方法。
这是我尝试过的,但它的抛出错误:
JObject template = JObject.Parse(assignment.Template.ToString());
var learner = JsonConvert.DeserializeObject<LearnerTemplate>(template.ChildTokens[3]);
谢谢
解决方案
您可以根据需要使用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"));
}
}
推荐阅读
- react-native - debugger-ui\debuggerWorker 无法重温
- javascript - 如何在节点js中使用带multer的FormData上传文件,在req.file中未定义,在req.body中获取{}
- angularjs - 我可以从 Angular JS 1.5 的另一个局部视图中加载视图吗?
- android - Reactnative V63+ 不变违规:TurboModuleRegistry.getEnforcing(...)
- node.js - 下载 youtube 播放列表
- flutter - Flutter:使用共享首选项打开/关闭 Flutter 本地通知时保存图标的状态
- python - 如何在不暂停整个程序的情况下等待一段时间?(Discord.py 重写。)
- rust - 从作为函数结果的 mod 中获取结构
- asp.net-core - NetCore 3.1 中操作的自定义 URL
- dart - PayPal Orders v2:订单的approvalurl(“checkoutnow?token..”)返回302重定向