Given następujący wynik json: Wynik domyślny json ma znany zestaw pól:Cofnięcie json ze znanymi i nieznanymi pól
{
"id": "7908",
"name": "product name"
}
Ale może być rozszerzony o dodatkowe pola (w tym przykładzie _unknown_field_name_1
i _unknown_field_name_2
) z których nazwy nie są znane podczas żądania wyniku.
{
"id": "7908",
"name": "product name",
"_unknown_field_name_1": "some value",
"_unknown_field_name_2": "some value"
}
Chciałbym wynik json być szeregowane i rozszeregować do iz klasą z właściwości dla znanych polach i map nieznanych pól (dla których nie ma żadnych właściwości) do nieruchomości (lub wielu właściwości) jak słownik, aby można było uzyskać do nich dostęp i zmodyfikować.
public class Product
{
public string id { get; set; }
public string name { get; set; }
public Dictionary<string, string> fields { get; set; }
}
Chyba muszę drogę do podłączenia do serializatora json i zrobić mapowanie dla brakujących członków siebie (zarówno dla serialize i deserializacji). czekałem na różnych możliwości:
- json.net i niestandardowe zamówienia rozpoznawania nazw (nie może dowiedzieć się, jak to zrobić)
- DataContract serializatora (może tylko przesłonić onserialized, onserializing)
- serialize do dynamicznego i zrobić niestandardowego mapowania (może to działać, ale wydaje się to dużo pracy)
- dopuścić dziedziczenie z DynamicObject (serializers pracować z refleksji, a nie powoływać się na metody trygetmember i trysetmember)
Używam restsharp, ale każdy serializer może być podłączony.
Aha, i nie mogę zmienić wynik json i this lub this mi nie pomogło.
Aktualizacja: To wygląda bardziej jak to: http://geekswithblogs.net/DavidHoerster/archive/2011/07/26/json.net-custom-convertersndasha-quick-tour.aspx
nie można czerpać z 'Dictionary' –
Wynik json posiada również tablice, które mapują do listy właściwości. Json w pytaniu jest zredukowaną częścią bardziej złożonego wyniku json. Więc nie. – nickvane