Remove Properties From a Json String using newtonsoft

there is a Remove method present (not sure if it was at the time of this question)

For example:

var raw = "your json text";
var o = (Newtonsoft.Json.Linq.JObject)JsonConvert.DeserializeObject(raw);
o.Property("totalItems").Remove()
return o.ToString();

or for your exact input

var parent = JsonConvert.DeserializeObject<JObject>(raw);
((JArray)parent.Property("results").Value)
    .Select(jo => (JObject)jo)
    .ToList()
    .ForEach(x => 
        x
            .Properties()
            .ToList()
            .ForEach(p =>
            {
                if (p.Name != "name")
                    p.Remove();
            }))
    //.Dump();
    ;

There are two basic approaches,

Either

  • Parse it to a JObject (eg JObject.Parse(json)); modify the object graph by updating the nested JObjects while traversing; serialize the original JObject which now represents the modified object graph.

Or

  • Deserialize the JSON to strongly-typed objects without the additional properties. The properties not present in the C# types will be silently dropped. Then serialized the just-deserialized object.

Tags:

C#

Json.Net