2017-10-04 94 views
1

做一个地址的Web服务请求时,我得到了以下JSON:以JSON地址数据转换为地址对象

{ 
    "cep": "04194-280", 
    "logradouro": "Rua Memorial de Aires", 
    "complemento": "", 
    "bairro": "Jardim São Savério", 
    "localidade": "São Paulo", 
    "uf": "SP", 
    "unidade": "", 
    "ibge": "3550308", 
    "gia": "1004" 
} 

我需要这个JSON转换为下列对象:

是JSON转换为一个对象的代码如下:

using (WebClient client = new WebClient()) 
{ 
    string jsonAddress = JsonConvert.SerializeObject(client.DownloadString("http://viacep.com.br/ws/" + tboCep.Text + "/json/")); 
    Addressa ddr = JsonConvert.DeserializeObject<Endereco>(jsonAddress); 

    tboCidade.Text = address.Localidade; //City 
    tboEstado.Text = address.UF;   // State 
    tboRua.Text = address.Logradouro; // Street 
    tboBairro.Text = address.Bairro;  // District 
} 

但我一直得到以下错误:

Error converting value "{ 
    "cep": "04194-280", 
    "logradouro": "Rua Memorial de Aires", 
    "complemento": "", 
    "bairro": "Jardim São Savério", 
    "localidade": "São Paulo", 
    "uf": "SP", 
    "unidade": "", 
    "ibge": "3550308", 
    "gia": "1004" 
}" to type 'ApiCorreios.Endereco'. Path '', line 1, position 269. 

有人会知道如何解决或有更好的建议吗?先谢谢你!

+1

你是双串行化。直接从网络调用返回的字符串,并取消它 – Nkosi

回答

0

你是在这里序列化。

string jsonAddress = JsonConvert.SerializeObject(client.DownloadString("http://viacep.com.br/ws/" + tboCep.Text + "/json/")); 

从客户端返回的字符串已经是一个序列化的对象,你基本上是序列化它。

以字符串从网络上直接调用返回和deseirlaize是

string jsonAddress = client.DownloadString("http://viacep.com.br/ws/" + tboCep.Text + "/json/"); 
var ddr = JsonConvert.DeserializeObject<Endereco>(jsonAddress);