Attempt by method 'System.Web.Helpers.Json.Decode(System



我有以下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、trimlevel、变体、信息特征、图像和文档将保持不变。我需要提取所有访问值,如语言。["de"], models.["t300"].name, timeLevels. ["t300"]["It"], variables和infoFeatures,因为这些键["]是动态的,所以我不确定该引用什么。

我试过了,

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

我也看过这个将JSON反序列化为c#动态对象?

and

var dynamicObject = Json.Decode(jsonString);

但收到以下错误;

尝试使用方法'System.Web.Helpers.Json. decode (System.String)'访问字段'System.Web.Helpers.Json。_serializer"失败了。

对于我们来说,取消在Project properties> Debug选项卡中的"Enable the Visual Studio hosting process"选项,从顶部的答案改为尝试方法'System.Web.Helpers.Json. cctor()'System.Web.Helpers.Json.CreateSerializer()'失败的

一般的解决方案是使用Json.net之类的东西并序列化为c# Object -这是非常灵活的,并且不会与来自客户端的json对象的动态特性相冲突。

当您有多个具有不同版本程序集的项目时,似乎会发生此错误;例如,如果您有JSON。NET 4.5.1在一个项目中,5.0.6在另一个项目中。如果您确保解决方案中的每个地方都存在相同的版本,那么事情似乎会得到排序。

相关内容

最新更新