Desserialize json com campos conhecidos e desconhecidos
Dado o seguinte resultado do json: O resultado padrão do json possui um conjunto conhecido de campos:
{
"id": "7908",
"name": "product name"
}
Mas pode ser estendido com campos adicionais (neste exemplo_unknown_field_name_1
e_unknown_field_name_2
) dos quais os nomes não são conhecidos ao solicitar o resultado.
{
"id": "7908",
"name": "product name",
"_unknown_field_name_1": "some value",
"_unknown_field_name_2": "some value"
}
Eu gostaria que o resultado json fosse serializado e desserializado para e de uma classe com propriedades para os campos conhecidos e mapeasse os campos desconhecidos (para o qual não há propriedades) para uma propriedade (ou várias propriedades) como um dicionário para que eles pudessem ser acessado e modificado.
public class Product
{
public string id { get; set; }
public string name { get; set; }
public Dictionary<string, string> fields { get; set; }
}
Eu acho que eu preciso de uma maneira de se conectar a um serializador json e fazer o mapeamento para os membros ausentes (tanto para serializar e desserializar). Eu tenho visto várias possibilidades:
json.net e resolvedores de contratos personalizados (não consigo descobrir como fazer isso)serializador de datacontrato (só pode substituir o onserializado, o da serialização)serializar para dinâmico e fazer mapeamento personalizado (isso pode funcionar, mas parece muito trabalho)deixe o produto herdar de DynamicObject (serializadores funcionam com reflexão e não invocam os métodos trygetmember e trysetmember)Estou usando o restsharp, mas qualquer serializador pode ser conectado.
Ah, e eu não posso mudar o resultado json, eisto ouisto também não me ajudou.
Atualizar: Isso parece mais com isso:http://geekswithblogs.net/DavidHoerster/archive/2011/07/26/json.net-custom-convertersndasha-quick-tour.aspx