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?

0

2 Answers

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(); ; 
2

There are two basic approaches,

Either

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.
1

Your Answer

Sign up or log in

Sign up using Google Sign up using Facebook Sign up using Email and Password

Post as a guest

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.