c# - JSON.net - 使用路径字符串写入 JSON/JObject

标签 c# json.net

我有一个小工具,我们可以使用 JObject.SelectToken(path) 从 JSON 中提取值。我们需要在运行时确定路径。完美运行。

我现在需要做的是使用相同的路径字符串写回 JSON(JObject 或其他)。我已经搜寻和搜索过,但我无法完全找到是否有任何东西可以像 SelectToken 那样干净利落地进行阅读。

(我也卡在 3.5 CF)

例如,像这样的东西:

... JObject read in already ...

var theJToken = theJObject.SelectToken("animals.cat[3].name");
theTJoken.SetValue("Bob"); // Of course this doesn't exist

... serialize it ... 

最佳答案

JToken.SelectToken实际上返回一个可以使用 JToken.Replace 修改的 JToken .您可以使用它来替换 JSON 对象中的节点,从而改变原始对象。

JObject o = JObject.Parse(@"{ 'cats': [
                { 'name': 'cat 1' },
                { 'name': 'cat 2' },
                { 'name': 'cat 3' } ] }");

// get the token
JToken secondCatName = o.SelectToken("cats[1].name");

// replace the name
secondCatName.Replace("meow");

// and the original object has changed
Console.WriteLine(o.ToString());
// { "cats": [ { "name": "cat 1" }, { "name": "meow" }, { "name": "cat 3" } ] }

关于c# - JSON.net - 使用路径字符串写入 JSON/JObject,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31929433/

相关文章:

c# - 用于数组和集合的自定义 Newtonsoft JsonConverter 以进行进一步操作

c# - Newtonsoft反序列化对象

C# I/O 异常 "This machine is disabled for file encryption.\r\n"

c# - 将 HtmlDocument.DomDocument 转换为字符串

c# - WPF MVVM - 从 ViewModel 访问 View 中 DataGrid 的 DependencyProperty

c# - 无法将当前 JSON 数组(例如 [1,2,3])反序列化为具有复杂和嵌套对象的类型

c# - 如何对自定义 JsonConverter 进行单元测试

c# - Json.NET Schema IsValid 即使类型不同也返回 true

c# - 使用 C# 动态读取 XML 和执行函数

c# - 将具有固定大小数组的 C++ 结构编码到 C# 中