Чтение файла JSON и изменение его с помощью JSON.NET

1

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 файл в динамике, а затем изменять/добавлять вещи, которые мне нужны?

  • 1
    Десериализовать JSON для вашего модельного объекта. Добавьте значения к объекту и сериализуйте его обратно в json, а JSON.NET - это библиотека, которая на самом деле позволяет сделать это очень легко.
Теги:
winforms
json.net

2 ответа

3
Лучший ответ

Вы можете разобрать JSON в JObject, манипулировать им через LINQ-to-JSON API, а затем получить обновленную строку JSON из JObject.

Например:

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"
}
1

JSON - это, в конечном счете, просто строка. Если вы работаете на стороне сервера, то, если вы не захотите сами проанализировать JSON, самый простой способ - использовать JSON.NET для десериализации его обратно в его собственную объектную модель. Конечно, вы также можете сделать это на стороне клиента с помощью JSON.parse() и добавить туда значение.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню