您可以使用
JsonConverter。为此目的,一个简单的转换器将是:
public class PersonConverter : JsonConverter{ public override bool CanConvert(Type objectType) { return objectType == typeof(Person); } public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer) { if (reader.TokenType == JsonToken.Null) return null; var array = JArray.Load(reader); var person = (existingValue as Person ?? new Person()); person.First = (string)array.ElementAtOrDefault(0); person.Last = (string)array.ElementAtOrDefault(1); person.Age = (string)array.ElementAtOrDefault(2); return person; } public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer) { var person = (Person)value; serializer.Serialize(writer, new[] { person.First, person.Last, person.Age }); }}
如果特定属性具有非基本类型,则可以用于
JToken.ToObject<T>(JsonSerializer)将它们反序列化为所需的类型:
person.First = array.ElementAtOrDefault(0)?.ToObject<string>(serializer);
然后,您可以将其应用于您的班级:
[JsonConverter(typeof(PersonConverter))]public class Person{ public string First { get; set; } public string Last { get; set; } public string Age { get; set; }}
或在设置中使用它:
var settings = new JsonSerializerSettings { Converters = new [] { new PersonConverter() } };var list = JsonConvert.DeserializeObject<List<Person>>(json, settings);
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)