有没有办法使用Json.NET通过路径设置属性?
JObject o = JObject.Parse(@"{
'CPU': 'Intel',
'Drivers': {
'Mouse': 'HPQ',
'VideoCard' : 'NVidia'
}
}");
//something like that
o.SetByPath("Drivers.VideoCard") = "Intel";
Run Code Online (Sandbox Code Playgroud)
可能吗?
顺便说一句,我知道我可以这样做:
o["Drivers"]["VideoCard"] = "Intel";
Run Code Online (Sandbox Code Playgroud)
但那不是我想要的.
sen*_*hin 10
该JObject.SelectToken和JToken.Replace方法可以在这里使用基本上达到同样的效果.
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);
}
Run Code Online (Sandbox Code Playgroud)
输出:
{
"CPU": "Intel",
"Drivers": {
"Mouse": "HPQ",
"VideoCard": "NVidia"
}
}
{
"CPU": "Intel",
"Drivers": {
"Mouse": "HPQ",
"VideoCard": "Intel"
}
}
Run Code Online (Sandbox Code Playgroud)
如果您愿意,可以使用扩展方法.
static void SetByPath(this JObject obj, string path, string value)
{
JToken token = obj.SelectToken(path);
token.Replace(value);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3169 次 |
| 最近记录: |