本文介绍了通过路径设置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属性
发布评论