2013-05-07 69 views
4

我有以下的JSON;嘗試方法'System.Web.Helpers.Json.Decode(System.String)'訪問字段'System.Web.Helpers.Json._serializer'失敗

{ 
"b2c": { 
    "languages": { 
     "de": { 
      "models": { 
       "t300": { 
        "name": "Aveo", 
        "bodyTypes": { 
         "t300-4d-my13": { 
          "trimLevels": { 
           "lt": { 
            "name": "LT", 
            "variants": { 
             "1.2_16V_86_Gas_MT": { 
              "name": "1.2 MT", 
              "price": { 
               "EUR": { 
                "value": 13990, 
                "formatted": "13.990,00 €" 
               } 
              }, 
              "infoFeatures": { 
               "fuel_consumption_extra_urban#consumption": { 
                "name": "Kraftstoffverbrauch außerorts ", 
                "value": "4.6", 
                "formatted": "4,6" 
               }, 
               "top_speed#kilometer_per_hour": { 
                "name": "Höchstgeschwindigkeit", 
                "value": "171", 
                "formatted": "171" 
               } 
              }, 
              "images": null, 
              "documents": null 
             } 
            } 
           } 
          } 
         } 
        } 
       } 
      } 
     } 
    } 
} 
} 

t300-4d-my13了B2C,德,T300的值,它等都是動態的,但語言,模型,bodyTypes,trimLevels,變體,inforFeatures,圖像和文件將保持不變。 我需要提取所有訪問值,如語言。[「de」],模型。[「t300」]。name,timeLevels。​​[「It」],Variants和infoFeatures,因爲這些鍵[「」]是動態的我不確定要提及什麼。

我都試過了,

var jsonSerializer = new JsonSerializer(); 
    dynamic dynamicObject = jsonSerializer.Deserialize(new JsonTextReader(new StringReader(jsonString))); 
    //var level1 = dynamicObject.b2c 

我已經看過這個問題,以及 Deserialize JSON into C# dynamic object?

,並試圖

var dynamicObject = Json.Decode(jsonString); 

但收到以下錯誤;

嘗試訪問字段'System.Web.Helpers.Json._serializer'的方法'System.Web.Helpers.Json.Decode(System.String)'失敗。

+0

我上面的異常答案發現在[鏈接](HTTP:// stackoverflow.com/questions/7066726/attempt-by-method-system-web-helpers-json-cctor-to-access-method-system-we)。 有些人可以讓我知道誰來引用動態JSON對象嗎? – SNS 2013-05-07 10:40:45

+0

我可以通過Json.Decode()來解碼Json字符串,並且可以訪問語言[「de」]等等。我注意到你在'languages'和[「de」之間使用了dot(。)。是你的問題嗎? – bob 2013-08-29 21:00:30

回答

2

一般的解決方案是使用類似於Json.net的東西,並將其序列化爲C#對象 - 這非常靈活,並且不會與來自客戶端的json對象的動態性質相沖突。

+1

我在Json.Net上工作,但序列化到C#對象是多級數據的絕對噩夢。感謝您的答覆。 – SNS 2013-05-09 09:23:58

1

當您使用不同版本的程序集創建多個項目時,會出現此錯誤;例如,如果您在一個項目中使用JSON.NET 4.5.1,而在另一個項目中使用5.0.6。如果確保解決方案中存在相同的版本,事情似乎會被排序。

相關問題