有人能指出我如何解决这样一个案件的正确方向吗?
我收到非常“平淡”的json数据,例如
{"Color":"Red", "Number":"7", "Name":"Bob"}
然而在.NET中我有两个这样的类:
Class Person
{
[JsonProperty(PropertyName="Name")]
public personName {get;set;}
[//HOW DO I DO THIS HERE???]
public ColorInfo favoriteColor {get;set;}
}
Class ColorInfo
{
public String color {get;set;}
}
正如您所看到的,我得到的数据与我的对象的任何部分都不匹配。为了解决基本问题,我只做JsonProperty并将其中一个映射到另一个(因此json中的Name映射到personName完美)。然而,我的类具有ColorInfo类型的属性(自定义类)并且THAT类具有称为颜色的属性的情况呢?
我需要以某种方式进入颜色类并将该颜色属性分配给json中的on。
有没有人有想法?
谢谢!
答案 0 :(得分:3)
使用CustomCreationConverter
,代码更简单:
public class PersonConverter : JsonCreationConverter<Person>
{
protected override Person Create(Type objectType, JObject jObject)
{
if (FieldExists("favoriteColor ", jObject))
{
return new Person() { favoriteColor = new ColorInfo() { Color = "Red" };
}
}
private bool FieldExists(string fieldName, JObject jObject)
{
return jObject[fieldName] != null;
}
}
然后:
var serializedObject = JsonConvert.SerializeObject( personInstance);
JsonConvert.DeserializeObject<Person>( serializedObject , new PersonConverter());