4

次の JSON があります。

{
"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
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
}

b2c、de、t300、t300-4d-my13、It などの値は動的ですが、言語、モデル、bodyTypes、trimLevels、バリアント、inforFeatures、画像、ドキュメントは同じままです。languages.["de"]、models.["t300"].name、timeLevels.["It"]、Variants、infoFeatures などの値にアクセスするには、すべてを抽出する必要があります。これらのキー [""] はダイナミクスであるため、何を参照すればよいかわかりません。

私が試してみました、

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

私もこれを見ました JSONをC#動的オブジェクトに逆シリアル化しますか?

そして試した

var dynamicObject = Json.Decode(jsonString);

しかし、次のエラーを受け取ります。

メソッド 'System.Web.Helpers.Json.Decode(System.String)' によるフィールド 'System.Web.Helpers.Json._serializer' へのアクセスに失敗しました。

4

3 に答える 3

4

私たちにとっては、[プロジェクトのプロパティ] > [デバッグ] タブで [Visual Studio ホスティング プロセスを有効にする] のチェックを外すのに役立ちました。 Web.Helpers.Json.CreateSerializer()' に失敗しました

于 2015-12-22T16:26:59.767 に答える
2

一般的な解決策は、Json.net のようなものを使用して C# オブジェクトにシリアル化することです。これは非常に柔軟で、クライアントからの json オブジェクトの動的な性質と競合しません。

于 2013-05-08T22:11:53.223 に答える
1

このエラーは、アセンブリのバージョンが異なる複数のプロジェクトがある場合に発生するようです。たとえば、あるプロジェクトに JSON.NET 4.5.1 があり、別のプロジェクトに 5.0.6 がある場合。ソリューションのどこにでも同じバージョンが存在することを確認すると、物事が整理されたように見えます。

于 2014-03-24T09:06:52.493 に答える