C# Манипулирование данными JSON

У меня есть "простой" сценарий: прочитать некоторый файл JSON, отфильтровать или изменить некоторые значения и записать полученный json обратно без изменения исходного форматирования.

Так, например, чтобы изменить это:

{
  "type": "FeatureCollection",
  "crs": {
    "type": "EPSG",
    "properties": {
      "code": 28992
    }
  },
  "features": [
    {
      "type": "Feature",
      "geometry": {
        "type": "Polygon",
        "coordinates": [
          [
            [
              149886.192,
              374554.705
            ],
            [
              149728.583,
              374473.112
            ],
            [
              149725.476,
              374478.215
            ]
          ]
        ]
      }
    }
  ]
}

На это:

{
  "type": "FeatureCollection",
  "crs": {
    "type": "EPSG",
    "properties": {
      "code": 28992
    }
  },
  "features": [
    {
      "type": "Feature",
      "geometry": {
        "type": "Point",
        "coordinates": 
            [
              149886.192,
              374554.705
            ]
      }
    }
  ]
}

Я пробовал JSON.Net от newtonsoft среди других, но единственное, что я могу найти, это:

  • читать в объект
  • записывать объект в json

Но я пропустил шаг "изменить объект". Есть подсказки?

Обновление

Вот что я пробовал до сих пор:

JToken contourManifest = JObject.Parse(input);

JToken features = contourManifest.SelectToken("features");

for (int i = 0; i < features.Count(); i++)
{
    JToken geometry = features[i].SelectToken("geometry");
    JToken geoType = geometry.SelectToken("type");
    JToken coordinates = geometry.SelectToken("coordinates");

    geoType = "Point";
}

Но это только изменяет значение переменной geoType. I' d должен изменить значение внутригеометрии. Мне нужна ссылка, а не копия! Возможно ли это?

Обновление

В настоящее время я не работаю над этим проектом, но я хотел бы оставить свой отзыв ответившим. Хотя мне нравится простота Shahin, мне нравится более формальный подход LB немного больше. Лично мне не нравится использовать строковые значения в качестве функционального кода, но это только я. Если бы я мог принять бота ч отвечает: Я бы. Я думаю, Шахину придется заплатить «просто» за.

17
задан Nebula 14 August 2012 в 07:44
поделиться