根据你所做的事情而定。在你的情况下,最简单的方法是创建一个JsonConverter。因此,你可以按照以下步骤进行操作:
public class IntArrayConverter : JsonCreationConverter<int[]>
{
protected override int[] Create(Type objectType, JArray jArray)
{
List<int> tags = new List<int>();
foreach (var id in jArray)
{
tags.Add(id.Value<int>());
}
return tags.ToArray();
}
}
public abstract class JsonCreationConverter<T> : JsonConverter
{
protected abstract T Create(Type objectType, JArray jObject);
public override bool CanConvert(Type objectType)
{
return typeof(T).IsAssignableFrom(objectType);
}
public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
{
JArray jArray = JArray.Load(reader);
T target = Create(objectType, jArray);
return target;
}
public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
{
throw new NotImplementedException();
}
}
然后使用新属性定义你的模型:
public class Person
{
public string Name { get; set; }
public string Gender { get; set; }
[JsonConverter(typeof(IntArrayConverter))]
public int[] Favorite_numbers { get; set; }
}
您可以像平常一样使用它:
Person result = JsonConvert.DeserializeObject<Person>(@"{
""Name"": ""Christina"",
""Gender"": ""female"",
""Favorite_numbers"": [11, 25 ,23]
}");