Asp.net

Newtonsoft.Json 序列化返回空的 json 對象

  • March 12, 2015

我有以下類的對象列表:

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

當我使用 Newtonsoft.Json 將此列表轉換為 json 字元串時,它返回空對像數組。

 string json=JsonConvert.SerializeObject(list);

我得到以下結果。

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

請幫我解決這個問題。

預設情況下,NewtonSoft.Json 只會序列化公共成員,因此請公開您的欄位:

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

**編輯:**如果由於某種原因你真的不想公開你的欄位,你可以用JsonPropertyAttribute裝飾它們以允許它們被序列化和反序列化:

[JsonProperty]
int catagoryId;

引用自:https://stackoverflow.com/questions/29003215