【发布时间】:2016-08-15 13:20:58
【问题描述】:
我收到这样的 json:
{
"Bryan": {
"age": 25,
"city": "Miami"
},
"Jeff": {
"age": 24,
"city": "Tokyo"
}
}
我想反序列化以获取 list<String> 中的人员姓名。
所以我有一个CustomJsonConverter:
public class JsonObjectsToListConverter : JsonConverter
{
public JsonObjectsToListConverter()
{
}
public override bool CanConvert(Type objectType)
{
return (objectType == typeof(HashSet<String>));
}
public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
{
JToken jtoken = JToken.Load(reader);
JObject jObjectCast = jtoken.Value<JObject>();
List<String> listPers = (from prop in jObjectCast.Properties()
select prop.Name).ToList();
return listPers;
}
public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
{
throw new NotImplementedException();
}
}
还有一个带有 List 成员的 Person 类:
public class Persons
{
[JsonConverter(typeof(JsonObjectsToListConverter))]
public List<String> listPers { get; set; }
}
问题是 CustomConverter 返回 null 除非我将父对象添加到 json 中,例如:
{"listP":
{
"Bryan":{
....
和 [JsonProperty("listP")] 在 Persons 类中。
我不明白反序列化过程中会发生什么,以及为什么没有PropertyName 属性就不能正常工作。
【问题讨论】:
标签: c# json json.net json-deserialization