以JSON地址数据转换为地址对象
问题描述:
做一个地址的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.
有人会知道如何解决或有更好的建议吗?先谢谢你!
答
你是双在这里序列化。
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);
你是双串行化。直接从网络调用返回的字符串,并取消它 – Nkosi