I have the following JSON string:
{ "results":[ { "id":11, "name":"Employee A", "isEmployee":true }, { "id":12, "name":"Employee B", "isEmployee":true }, { "id":13, "name":"Employee C", "isEmployee":true }, { "id":14, "name":"Contractor A", "isEmployee":false }, { "id":15, "name":"Contractor B", "isEmployee":false } ], "totalItems":5 }
I need to remove from it the id and isEmployee properties and leave only the name property.
Here is the desired result:
{ "results":[ { "name":"Employee A" }, { "name":"Employee B" }, { "name":"Employee C" }, { "name":"Contractor A" }, { "name":"Contractor B" } ], "totalItems":5 }
How can this be done in C# using Newtonsoft JSON.NET?
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
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
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With