我有一个小工具,我们可以使用 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/