C # Manipulowanie danymi JSON

Mam „prosty” scenariusz: przeczytaj plik JSON, filtruj lub zmień niektóre wartości i zapisz wynikowy json bez zmiany oryginalnego formatowania.

Na przykład, aby to zmienić:

{
  "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
            ]
          ]
        ]
      }
    }
  ]
}

Zaangażowany w to:

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

Wypróbowałem między innymi JSON.Net przez newtonsoft, ale jedyne, co mogę znaleźć, to:

wczytać do obiektunapisz obiekt do jsona

Ale brakuje mi kroku „zmień obiekt”. Jakieś wskazówki?

Aktualizacja

Oto, co próbowałem do tej pory:

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

Ale to tylko zmienia wartość zmiennej geoType. Spodziewałem się zmienić wartośćwewnątrz również geometria. Potrzebuję odniesienia, a nie kopii! czy to możliwe?

Aktualizacja

Jestem obecnie wyłączony z tego projektu, ale chciałbym przekazać swoją opinię uczestnikom. Chociaż podoba mi się prostota Shahina, lubię bardziej formalne podejście L.B. trochę lepiej. Osobiście nie lubię używać wartości łańcuchowych jako kodu funkcjonalnego, ale to tylko ja. Gdybym mógł zaakceptować obie odpowiedzi: chciałbym. Myślę, że Shahin będzie musiał zapłacić za „tylko” głosowanie.

questionAnswers(4)

yourAnswerToTheQuestion