Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/287.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文件并使用json.NET进行更改_C#_Json_Winforms_Json.net - Fatal编程技术网

C# 读取json文件并使用json.NET进行更改

C# 读取json文件并使用json.NET进行更改,c#,json,winforms,json.net,C#,Json,Winforms,Json.net,JSON对我来说真的很新鲜。如何使用JSON.NET将键值对添加到已创建的JSON文件中 看起来是这样的: { "data": { "subData1": { "key1":"value1", "key2":"value2", "key3":"value3" }, "subdata2": { "key4":"value4", "key5":"value5", "key6":"v

JSON对我来说真的很新鲜。如何使用JSON.NET将键值对添加到已创建的JSON文件中

看起来是这样的:

{
"data": {
    "subData1": {
        "key1":"value1",
        "key2":"value2",
        "key3":"value3"
    },
    "subdata2": {
        "key4":"value4",
        "key5":"value5",
        "key6":"value6"
    }
}
"key7":"value7",
"key8":"value8"     
}
例如,我想将其更改为以下内容:

{
"data": {
    "subData1": {
        "key1":"value1",
        "key2":"value2",
        "key3":"value3"
    },
    "subdata2": {
        "key4":"value4",
        "key5":"value5",
        "key6":"value6"
    },
    "newSubData": {
        "myKey1":"myVal1",
        "myKey2":"myVal2",
        "myKey3":"myVal3"
    }
}
"key7":"anotherValChangeByMe",
"key8":"value8"     
}

我是否需要将整个JSON文件读入动态文件,然后以某种方式更改/添加我需要的内容?

JSON最终只是一个字符串。如果您在服务器端工作,那么除非您想自己解析JSON,否则最简单的方法是使用JSON.NET将其反序列化回其本机对象模型。当然,您也可以使用
JSON.parse()
在客户端执行此操作,并在那里添加值。

JSON最终只是一个字符串。如果您在服务器端工作,那么除非您想自己解析JSON,否则最简单的方法是使用JSON.NET将其反序列化回其本机对象模型。当然,您也可以使用
JSON.parse()
在客户端执行此操作,并在那里添加值。

您可以将JSON解析为
JObject
,通过API对其进行操作,然后从
JObject
获取更新的JSON字符串

例如:

string json = @"
{
    ""data"": {
        ""subData1"": {
            ""key1"": ""value1"",
            ""key2"": ""value2"",
            ""key3"": ""value3""
        },
        ""subdata2"": {
            ""key4"": ""value4"",
            ""key5"": ""value5"",
            ""key6"": ""value6""
        }
    },
    ""key7"": ""value7"",
    ""key8"": ""value8""
}";

JObject root = JObject.Parse(json);
JObject data = (JObject)root["data"];
JObject newSubData = new JObject();
newSubData.Add("myKey1", "myValue1");
newSubData.Add("myKey2", "myValue2");
newSubData.Add("myKey3", "myValue3");
data.Add("newSubData", newSubData);
root["key7"] = "anotherValChangeByMe";

Console.WriteLine(root.ToString());
输出:

{
  "data": {
    "subData1": {
      "key1": "value1",
      "key2": "value2",
      "key3": "value3"
    },
    "subdata2": {
      "key4": "value4",
      "key5": "value5",
      "key6": "value6"
    },
    "newSubData": {
      "myKey1": "myValue1",
      "myKey2": "myValue2",
      "myKey3": "myValue3"
    }
  },
  "key7": "anotherValChangeByMe",
  "key8": "value8"
}

您可以将JSON解析为一个
JObject
,通过API对其进行操作,然后从
JObject
获取更新的JSON字符串

例如:

string json = @"
{
    ""data"": {
        ""subData1"": {
            ""key1"": ""value1"",
            ""key2"": ""value2"",
            ""key3"": ""value3""
        },
        ""subdata2"": {
            ""key4"": ""value4"",
            ""key5"": ""value5"",
            ""key6"": ""value6""
        }
    },
    ""key7"": ""value7"",
    ""key8"": ""value8""
}";

JObject root = JObject.Parse(json);
JObject data = (JObject)root["data"];
JObject newSubData = new JObject();
newSubData.Add("myKey1", "myValue1");
newSubData.Add("myKey2", "myValue2");
newSubData.Add("myKey3", "myValue3");
data.Add("newSubData", newSubData);
root["key7"] = "anotherValChangeByMe";

Console.WriteLine(root.ToString());
输出:

{
  "data": {
    "subData1": {
      "key1": "value1",
      "key2": "value2",
      "key3": "value3"
    },
    "subdata2": {
      "key4": "value4",
      "key5": "value5",
      "key6": "value6"
    },
    "newSubData": {
      "myKey1": "myValue1",
      "myKey2": "myValue2",
      "myKey3": "myValue3"
    }
  },
  "key7": "anotherValChangeByMe",
  "key8": "value8"
}

将json反序列化到模型对象。向对象添加值并将其序列化回json,json.NET是一个库,它实际上允许非常轻松地完成此操作。将json反序列化到您的模型对象。向对象添加值并将其序列化回json,json.NET是一个库,它实际上允许非常轻松地完成此操作。