Как изменить структуру json c помощью C#?
Я получаю json в ответ на запрос. Он выглядит примерно так: https://pastebin.com/pjdxZunJ
Мне нужно поменять, чтобы получилось так: https://pastebin.com/Xzjvd1vS
(Нужно убрать
"data": {
и вместо него добавить
"roamingSetttingsVersion": 7,
А также внизу убрать
"modified": 1634716353754,
"type": "Ares.PlayerSettings"
) Данные внутри могут отличаться
Ответы (1 шт):
Для вашей задачи достаточно просто будет использовать JObject из библиотеки Newtonsoft.Json:
var json = File.ReadAllText(@"D:\source.json"); // Здесь чтение файла из диска - для примера
var jObject = JObject.Parse(json);
var jObjectCorrected = jObject["data"];
jObjectCorrected["roamingSetttingsVersion"] = 7;
var outJson = jObjectCorrected.ToString();
Я получаю { "actionMappings": [ { "alt": false, "bindIndex": 0, roamingSetttingsVersion нет
roamingSetttingsVersion-поле присутствует в outJson, просто добавилось оно в середину. JSON формат предполагает то, что порядок полей json-объекта не имеет никакого значения.
А как убрать "modified": 1634716353754, "type": "Ares.PlayerSettings"?
Эти поля удалились из json. Как это произошло? Очень просто. Строка кода:
var jObjectCorrected = jObject["data"];
вернет "потроха" поля "data", а именно, тот json-объект, который объявлен после "data":. Другими словами, мы спустились на один уровень вложенности ниже. Поля "modified": 1634716353754, "type": "Ares.PlayerSettings" находятся снаружи по отношению к "потрохам" поля "data", из-за чего они и не вошли в итоговый json-объект