如何使用嵌套字典反序列化json?

时间:2011-01-04 23:01:06

标签: json parsing json.net deserialization

对于某些端点,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)。

现在我有一个小问题反序列化'属性'部分。如果我使用例如一种字典,它将它转换为一个漂亮的字典,但'classifiers'值只是一个{}字符串。

有没有办法告诉json.net将子数组反序列化为另一个字典等等?基本上在返回中有一定数量的普通键/值,但我知道可能不仅仅是'分类器'子数组(参见'标签'),并且可能深度在值中更进一步。 ..

基本上我想知道的是,如何正确地反序列化属性部分?有什么建议?我不介意编写自己的JsonConverter,但也许已经有了一种没有它的方法。

1 个答案:

答案 0 :(得分:1)

我在这里找到了类似问题的解决方案: Json.NET: Deserializing nested dictionaries

它使用自定义的JsonConverter,如果没有它,我就没有办法。