【发布时间】:2015-08-04 19:39:05
【问题描述】:
我有一个类 Person,它看起来像这样:
public class Person
{
public string FirstName { get; set; }
public string LastName { get; set; }
public string Hobbies { get; set; }
public int Age { get; set; }
public string Country {get; set;}
public string Address { get; set; }
public string Phone { get; set; }
public string Gender { get; set; }
}
我想要的是重写 WriteJson 函数。我已经设法完成了 ReadJson。我希望我的 WriteJson 编写一个如下所示的 json 字符串: 最终目标是执行编写任何其他类型对象的列表。
@"{
'Columns':['FirstName','LastName','Hobbies','Age','Country','Address','Phone','Gender'],
'Rows':[
['X', 'Y', 'Cuisine', '35', 'France', 'unknown', 'unknown', 'male'],
['W', 'Z', 'Jouer', '43', 'France', 'unknown', 'unknown', 'male'],
...]
}";
我的 WriteJson 是这样的:
public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
{
IEnumerable collectionObj = value as IEnumerable;
writer.WriteStartArray();
foreach (object curObj in collectionObj)
{
writer.WriteStartObject();
serializer.Serialize(writer, curObj);
writer.WriteEndObject();
}
writer.WriteEndArray();
}
编译时,我仍然有一个错误(我认为是因为我的 WriteStartArray),您能否确认我出了什么问题以及如何覆盖我的 WriteJson 函数以执行我想要的操作?
这是我得到的错误:
附加信息:处于 ObjectStart 状态的令牌 StartObject 将导致 JSON 对象无效。路径“[0]”。
感谢您的帮助。
【问题讨论】:
标签: c# json.net overriding