Я получаю JSon от стороннего API, который не соответствует моим классам.Пользовательское преобразование JSon для объектов C#
Некоторые свойств JSon не будут превращаться другими имеют разные названия и т.д.
Как я могу определить пользовательское преобразование из JSON в моем C# объекта.
Это объекты, у меня есть в C#:
public class PropertyList {
public Int32 Page { get; set; }
public String[] ErrorMessages { get; set; }
public List<Property> Properties { get; set; }
}
public class Property {
public String Name { get; set; }
public String Reference { get; set; }
public String Region { get; set; }
public IList<String> Features { get; set; }
public String Id { get; set; }
public Double Price { get; set; }
public IList<String> ImagesUrls { get; set; }
}
И это данные JSon, которые я хочу, чтобы преобразовать из:
{
"page" : 0,
"errorMessages" : [ ],
"listings" : [
{
"data" : {
"name" : "The name",
"reference__c" : "ref1234",
"region__c" : "London",
"features__c" : "Garage;Garden;",
"id" : "id1234",
"price_pb__c" : 700000,
},
"media" : {
"images" : [
{
"title" : "image1",
"url" : "http://www.domain.com/image1"
},
{
"title" : "image2",
"url" : "http://www.domain.com/image2"
}
]
}
}
{
NOTE: Other items
}
]
}
Как мне это сделать?
UPDATE 1
Используя Тьяго предложение, я смог разобрать и ErrorMessages, но не Свойства. Поэтому я создаю следующий конвертер:
public class PropertyResultConverter : JsonConverter {
public override bool CanConvert(Type objectType) {
return (objectType == typeof(PropertyResult));
}
public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer) {
JObject jo = JObject.Load(reader);
PropertyResult propertyResult = jo.ToObject<PropertyResult>();
propertyResult.Properties = jo.SelectToken("listings.data").ToObject<List<Property>>();
return propertyResult;
}
public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer) {
throw new NotImplementedException();
}
}
Но когда я пытаюсь это я получаю следующее сообщение об ошибке: исключение типа «System.NullReferenceException» произошло
На:
propertyResult.Properties = jo.SelectToken("listings.data").ToObject<List<Property>>();
Любые идея, почему это происходит?
было мое обновление полезным? –