我有以下类的对象列表:
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);
我得到了以下结果。
{},{}
关于这个问题,请帮我一下。
发布于 2015-03-12 15:18:16
默认情况下,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;
发布于 2017-02-21 22:24:33
您还可以装饰您的类来序列化所有您想要的成员,而不必为每个成员指定JsonProperty。
[JsonObject(MemberSerialization.OptOut)]
public class Catagory {
...
}
MemberSerialization枚举允许您指定要序列化的成员:
发布于 2019-02-02 06:25:28
这个问题的另一个原因--我试图序列化的类派生自具有[DataContract]
属性的基类,但是派生类缺少这个属性。一旦我将[DataContract]
添加到派生类中,并将[DataMember]
添加到派生类的所有公共属性中,它立即开始工作。
https://stackoverflow.com/questions/29003215
复制相似问题