Search code examples
c#json.netsystem.text.json

How do you remove a nested element from a json string using system.text.json C#


I have a json string that has nested values:

{
  "card": {
    "number": "411111111111111111",
    "expirationMonth": null,
    "expirationYear": null,
    "securityCode": null
  }
}

I want to remove expirationMonth, expirationYear, securityCode so that only card: number remain. but I can't find any example of how to do this with system.text.json that aren't wickedly complex and involve basically writing your own extension library.

Here is what I've tried:

JsonObject requestJson = JsonSerializer.Deserialize<JsonObject>(jsonString);
                requestJson.Remove("expirationMonth");
                requestJson.Remove("expirationYear");
                requestJson.Remove("securityCode");

But since the elements are nested JsonObject.Remove does nothing.


Solution

  • I wrote with 2 ways

    Use system.text.json

    JsonObject requestJson = JsonSerializer.Deserialize<JsonObject>(jsonString);
    
    var card = requestJson["card"].AsObject();
    
    card.Remove("expirationMonth");
    
    card.Remove("securityCode");
    card.Remove("expirationYear");
    
    

    use Newtonsoft.Json

    
    var objd = JObject.Parse(jsonString);
     objd.Value<JObject>("card").Remove("expirationMonth");
     objd.Value<JObject>("card").Remove("expirationYear");
     objd.Value<JObject>("card").Remove("securityCode");
    
    Console.WriteLine(objd);