Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在Json数组中查找特定项并在c中进行操作#_C#_Json - Fatal编程技术网

C# 如何在Json数组中查找特定项并在c中进行操作#

C# 如何在Json数组中查找特定项并在c中进行操作#,c#,json,C#,Json,我有一个复杂的json文件,其中可以有多种类型的资源,类型也可以是重复的。鉴于此,我有两个问题,我试图在网上搜索,但没有找到任何线索 如何找到特定类型,比如说type3resource对象,它可以返回多个结果 一旦找到特定的资源,我想再添加一个属性并将其保存为json { "resources": [{ "type": "type1", "name": "dummy1", "properties": { "p1": "v1" } }, {

我有一个复杂的json文件,其中可以有多种类型的资源,类型也可以是重复的。鉴于此,我有两个问题,我试图在网上搜索,但没有找到任何线索

  • 如何找到特定类型,比如说
    type3
    resource对象,它可以返回多个结果

  • 一旦找到特定的资源,我想再添加一个属性并将其保存为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"
            }
        }
        }]
    }
    

  • 首先,获取一个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));