Как десериализовать JSON с помощью вложенных словарей? - PullRequest
6 голосов
/ 05 января 2011

Для некоторых конечных точек SimpleGeo.com возвращает что-то вроде этого:

{
    "geometry":{
        "type":"Point",
        "coordinates":[
            -122.421583,
            37.795027    
        ]          
    },
    "type":"Feature",
    "id":SG_5JkVsYK82eLj26eomFrI7S_37.795027_-122.421583@1291796505,
    "properties":{
        "province":"CA",
        "city":"San Francisco",
        "name":"Bell Tower",
        "tags":[],
        "country":"US",
        "phone":"+1 415 567 9596",
        "href": http://api.simplegeo.com/1.0/features/SG_5JkVsYK82eLj26eomFrI7S_37.795027_-122.421583@1291796505.json,
        "address":"1900 Polk St",
        "owner":"simplegeo",
        "postcode":"94109",
        "classifiers":[
            {
                "category":"Restaurant",
                "type":"Food & Drink",
                "subcategory":""                  
            }             
        ]          
    }     
}

(см. http://simplegeo.com/docs/api-endpoints/simplegeo-features#get-detailed-information).

Теперь у меня небольшая проблема с десериализацией части 'properties'. Если я использую, например, тип Dictionary, он преобразует его в хороший словарь, но значение 'классификаторов' - всего одна строка {}.

Есть ли способ сказать json.net о десериализации подмассивов в еще один словарь и т. Д. И т. Д.? По сути, в этом возвращении есть количество простых ключей / значений, но я знаю, что это может быть нечто большее, чем просто подкласс «классификаторов» (см. «Теги»), и, возможно, глубина еще больше углубляется в значения. ..

Так что в основном меня интересует, как правильно десериализовать часть свойств? Какие-либо предложения? Я не против написать свой собственный JsonConverter, но, возможно, уже есть способ, который работает без него.

1 Ответ

1 голос
/ 21 июня 2011

Я нашел решение для подобного вопроса здесь: Json.NET: десериализация вложенных словарей .

В нем используется собственный JsonConverter, и я не вижу способаобойтись без этого.

...