通过路径设置JSON属性 [英] Set JSON attribute by path

查看:244
本文介绍了通过路径设置JSON属性的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

是否可以使用Json.NET通过路径设置属性?

Is there a way to set an attribute by the path, using Json.NET?

JObject o = JObject.Parse(@"{
'CPU': 'Intel',
'Drivers': {
   'Mouse': 'HPQ',
   'VideoCard' : 'NVidia'
   }
}");

//something like that
o.SetByPath("Drivers.VideoCard") = "Intel";

有可能吗?

顺便说一句,我知道我可以做到:

By the way, I know that I can do this:

o["Drivers"]["VideoCard"] = "Intel";

但这不是我想要的.

推荐答案

> c0> JToken.Replace 方法可在此处使用达到基本相同的效果.

The JObject.SelectToken and JToken.Replace methods can be used here to achieve essentially the same effect.

static void Main(string[] args)
{
    JObject obj = JObject.Parse(@"{
      'CPU': 'Intel',
      'Drivers': {
        'Mouse': 'HPQ',
        'VideoCard' : 'NVidia'
       }
    }");
    Console.WriteLine(obj);

    JToken token = obj.SelectToken("Drivers.VideoCard");
    token.Replace("Intel");
    Console.WriteLine(obj);
}

输出:

{
  "CPU": "Intel",
  "Drivers": {
    "Mouse": "HPQ",
    "VideoCard": "NVidia"
  }
}
{
  "CPU": "Intel",
  "Drivers": {
    "Mouse": "HPQ",
    "VideoCard": "Intel"
  }
}

如果需要,可以使用扩展方法来扔掉它.

Toss it in an extension method if you'd like.

static void SetByPath(this JObject obj, string path, string value)
{
    JToken token = obj.SelectToken(path);
    token.Replace(value);
}

这篇关于通过路径设置JSON属性的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆