Newtonsoft.Json serialization returns empty json object Newtonsoft.Json serialization returns empty json object asp.net asp.net

Newtonsoft.Json serialization returns empty json object


By default, NewtonSoft.Json will only serialize public members, so make your fields public:

public class Catagory{    public int catagoryId;    public string catagoryNameHindi;    public string catagoryNameEnglish;    public List<Object> subCatagories;    public Catagory(int Id, string NameHindi, string NameEng, List<Object> l)    {        this.catagoryId = Id;        this.catagoryNameHindi = NameHindi;        this.catagoryNameEnglish = NameEng;        this.subCatagories = l;    }}

Edit: If for some reason you really don't want to make your fields public, you can instead decorate them with the JsonPropertyAttribute to allow them to be serialized and deserialized:

[JsonProperty]int catagoryId;


You could also decorate your class to serialize all members you want without having to specify [JsonProperty] for each of them.

[JsonObject(MemberSerialization.OptOut)]public class Catagory {    ...}

The MemberSerialization enum allows you to specify what members you want to serialize:

  • MemberSerialization.OptOut: All public members are serialized.
  • MemberSerialization.OptIn: Only members marked with JsonPropertyAttribute or DataMemberAttribute are serialized.
  • MemberSerialization.Fields: All public and private members are serialized.


Another cause of this problem--the class I was attempting to serialize derived from a base class that had the [DataContract] attribute, but the derived class lacked this attribute. Once I added [DataContract] to the derived class and [DataMember] to all of the public properties of the derived class it began working immediately.