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

hvo*_*mer 2 c# json.net

我有一个小实用程序,我们使用从JSON中提取值JObject.SelectToken(path).我们需要在运行时确定路径.完美的工作.

我现在需要做的是使用相同的路径字符串写回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 ... 
Run Code Online (Sandbox Code Playgroud)

pok*_*oke 6

JToken.SelectToken实际上返回一个JToken可以使用修改的JToken.Replace.您可以使用它来替换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" } ] }
Run Code Online (Sandbox Code Playgroud)