C# 如何在Json数组中查找特定项并在c中进行操作#
我有一个复杂的json文件,其中可以有多种类型的资源,类型也可以是重复的。鉴于此,我有两个问题,我试图在网上搜索,但没有找到任何线索C# 如何在Json数组中查找特定项并在c中进行操作#,c#,json,C#,Json,我有一个复杂的json文件,其中可以有多种类型的资源,类型也可以是重复的。鉴于此,我有两个问题,我试图在网上搜索,但没有找到任何线索 如何找到特定类型,比如说type3resource对象,它可以返回多个结果 一旦找到特定的资源,我想再添加一个属性并将其保存为json { "resources": [{ "type": "type1", "name": "dummy1", "properties": { "p1": "v1" } }, {
type3
resource对象,它可以返回多个结果{
"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"
}
}
}]
}
首先,获取一个JSON库。我推荐
Newtonsoft.Json
(作为numget
软件包安装)
我使用的是文件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));
JObject JObject=JObject.Load(
新的JsonTextReader(File.OpenText(“Data.json”));
JArray资源=(JArray)作业对象[“资源”];
foreach(资源中的变量type3Resource
.Where(obj=>obj[“type”].Value()==“type3”))
{
type3Resource[“SpecialValue”]=3;
}
File.WriteAllText(“Data2.json”,
ToString(Formatting.Indented));