由於在序列化Person
實例時想要獲得的json字符串不是標準字符串,所以您需要編寫一個自定義轉換器並用它來裝飾您的類。一種方法是如下。寫類繼承JsonConverter
:
public class CustomConverter : JsonConverter
{
public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
{
if (value == null) return;
writer.WriteStartObject();
writer.WritePropertyName(value.GetType().Name);
writer.WriteStartArray();
var properties = value.GetType().GetProperties();
foreach (var property in properties)
writer.WriteValue(value.GetType().GetProperty(property.Name).GetValue(value));
writer.WriteEndArray();
writer.WriteEndObject();
}
public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
{
throw new NotImplementedException();
}
public override bool CanConvert(Type objectType)
{
return objectType == typeof (Person);
}
}
裝飾類與JsonConverter
屬性:
[JsonConverter(typeof(CustomConverter))]
public class Person
{
public string Name { get; set; }
public string LastName { get; set; }
public int Age { get; set; }
}
現在讓我們說,你使用下面的代碼:
var person = new Person
{
Name = "John",
LastName = "Smith",
Age = 13
};
var json = JsonConvert.SerializeObject(person, Formatting.Indented);
的json
varible WIL有這個值:
{
"Person": [
"John",
"Smith",
13
]
}
演示here
您可以嘗試{「Person」:[「John」,「Smith」,13]}。 – 2014-09-10 12:34:55