使用Newtonsoft.Json.JsonConvert.DeserializeObject时出错

时间:2018-08-21 23:28:21

标签: json json.net

我正在尝试使用Newtonsoft反序列化Json字符串,但出现此错误:

Newtonsoft.Json.dll中发生了类型为'Newtonsoft.Json.JsonSerializationException'的未处理异常

附加信息:无法将当前JSON数组(例如[1,2,3])反序列化为类型'ShopFacilBradescoTeste.Erros',因为该类型需要JSON对象(例如{“ name”:“ value”})来反序列化正确。

要解决此错误,可以将JSON更改为JSON对象(例如{“ name”:“ value”}),也可以将反序列化类型更改为数组或实现集合接口的类型(例如ICollection,IList),例如可以从JSON数组反序列化的列表。还可以将JsonArrayAttribute添加到类型中,以强制其从JSON数组反序列化。

路径“ erros。$ values”,第1行,位置45。

这是我的Json数据:

string json = @“ {”“ $ id”“:”“ 1”“,”“ erros”“:{”“ $ id”“:”“ 2”“,”“ $ values”“ :: [ ]},“” isValid“”:true,“” message“”:null,“” retornoConsulta“”:{“” $ id“”:“” 3“”,“” $ values“”:[{“ $ id“”:“” 4“”,“” tipoLogradouro“”:“” Rua“”,“” logradouro“”:“” Abel Tavares“”,“” bairro“”:“” JardimBelém“”,“ “ localidade”“:”“圣保罗”“,”“ uf”“:”“ SP”“,” cep“”:“” 03810110“”}}}}“;

Retorno结果= Newtonsoft.Json.JsonConvert.DeserializeObject(json);

这些是我的课程:

public class Retorno
{
    public string id { get; set; }
    public Erros erros { get; set; }
    public bool isValid { get; set; }
    public object message { get; set; }
    public Retornoconsulta retornoConsulta { get; set; }
}

public class Erros
{
    public string id { get; set; }
    public object[] values { get; set; }
}

public class Retornoconsulta
{
    public string id { get; set; }
    public Values[] values { get; set; }
}

public class Values
{
    public string id { get; set; }
    public string tipoLogradouro { get; set; }
    public string logradouro { get; set; }
    public string bairro { get; set; }
    public string localidade { get; set; }
    public string uf { get; set; }
    public string cep { get; set; }
}

有什么想法吗?

谢谢。

2 个答案:

答案 0 :(得分:0)

您的JSON看起来不像JSON。但这没关系,有一些辅助课程可以解决这些问题。

这应该做到:

parsedJson = System.Web.Helpers.Json.Encode(json);
Retorno result = Newtonsoft.Json.JsonConvert.DeserializeObject(parsedJson);

我刚刚在我的IDE上对其进行了测试,看来还可以。

答案 1 :(得分:0)

您是否尝试过这样

string json = @"[ {""$id"": ""1"",""erros"": {""$id"": ""2"",""$values"": []},""isValid"": true,""message"": null,""retornoConsulta"": {""$id"": ""3"",""$values"": [{""$id"": ""4"",""tipoLogradouro"": ""Rua"",""logradouro"": ""Abel Tavares"",""bairro"": ""Jardim Belém"",""localidade"": ""São Paulo"",""uf"": ""SP"",""cep"": ""03810110""}]} ] }";

您需要像这样

对于JSON数组,您的数据必须在[和]之间