VIVEK VIVEK - 2 months ago 72
JSON Question

Newtonsoft.Json serialization returns empty json object

I have list of objects of following class:

public class Catagory
{
int catagoryId;
string catagoryNameHindi;
string catagoryNameEnglish;
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;
}
}

public class SubCatagory
{
int subCatagoryId { get; set; }
string subCatNameHindi { get; set; }
string subCatNameEng { get; set; }

public SubCatagory(int Id, string NameHindi, string NameEng)
{
this.subCatagoryId = Id;
this.subCatNameEng = NameEng;
this.subCatNameHindi = NameHindi;
}
}


when I am converting this list to json string by using Newtonsoft.Json it returns array of empty objects.

string json=JsonConvert.SerializeObject(list);


I am getting following result.


[{},{},{},{},{}]


Please help me regarding this problem.

Answer

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;
Comments