通过路径设置JSON属性 [英] Set JSON attribute by path
本文介绍了通过路径设置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屋!
查看全文