Как изменить структуру json c помощью C#?

Я получаю json в ответ на запрос. Он выглядит примерно так: https://pastebin.com/pjdxZunJ

Мне нужно поменять, чтобы получилось так: https://pastebin.com/Xzjvd1vS

(Нужно убрать

"data": {

и вместо него добавить

"roamingSetttingsVersion": 7,

А также внизу убрать

  "modified": 1634716353754,
  "type": "Ares.PlayerSettings"

) Данные внутри могут отличаться


Ответы (1 шт):

Автор решения: Andrei Khotko

Для вашей задачи достаточно просто будет использовать 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-объект

→ Ссылка