我有一个复杂的json文件,我可以拥有多种类型的资源,类型也可以重复。鉴于此,我有两个问题,我试图在网上搜索,但没有发现任何线索。
如何找到特定类型的type3
资源对象,它可以返回多个结果
一旦找到特定资源,我想再添加一个属性并将其保存为json
{
"resources": [{
"type": "type1",
"name": "dummy1",
"properties": {
"p1": "v1"
}
}, {
"type": "type2",
"name": "dummy2",
"properties": {
"p1": "v1",
"p2": {
"k1": "v1"
}
}
}, {
"type": "type3",
"name": "dummy3",
"properties": {
"p1": {
"k1": "v1"
},
"p2": {
"k1": "v1",
"k2": "v2"
}
}
}, {
"type": "type3",
"name": "dummy4",
"properties": {
"p1": {
"k1": "v1"
},
"p2": {
"k1": "v1",
"k2": "v2"
}
}
}]
}
答案 0 :(得分:2)
首先,获取一个JSON库。我建议Newtonsoft.Json
(安装为NuGet
包)。
我正在使用File api,但以另一种方式构建JObject
非常容易。 ToString
调用再次返回JSON字符串。我也使用Linq
来查找类型为type3的数组元素。
JObject jObject = JObject.Load(
new JsonTextReader(File.OpenText("Data.json")));
JArray resources = (JArray)jObject["resources"];
foreach (var type3Resource in resources
.Where(obj => obj["type"].Value<string>() == "type3"))
{
type3Resource["SpecialValue"] = 3;
}
File.WriteAllText("Data2.json",
jObject.ToString(Formatting.Indented));