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.