jsonconvert.deserializeobject c#数组
我做不到。以下是JSON: 这是我的代码:jsonconvert.deserializeobject c#数组,c#,json,C#,Json,我做不到。以下是JSON: 这是我的代码: using (var client = new WebClient()) { var url = string.Format("https://fipe-parallelum.rhcloud.com/api/v1/{0}/marcas/{1}/modelos", tipo_cb.SelectedValue, marca_cb.SelectedValue); //Download do resultado
using (var client = new WebClient())
{
var url = string.Format("https://fipe-parallelum.rhcloud.com/api/v1/{0}/marcas/{1}/modelos", tipo_cb.SelectedValue, marca_cb.SelectedValue);
//Download do resultado
var json = client.DownloadString(url);
List<Modelos> plist = JsonConvert.DeserializeObject<List<Modelos>>(json);
foreach (Modelos data in plist)
{
modelo_cb.Items.Add(new ListItem(data.nome.ToString(), data.codigo.ToString()));
}
}
谢谢 问题在于数据模型与JSON不匹配。您的根JSON容器是一个对象(名称/值对的集合,用大括号括起来),而不是一个数组:
{“modelos”:[…]}
。这样的对象需要映射到非集合c#对象,如中所述。事实上,如果您只需将JSON链接发布到它,它将为您设计一个正确的数据模型:
public class Modelo
{
public string nome { get; set; }
public int codigo { get; set; }
}
public class Ano
{
public string nome { get; set; }
public string codigo { get; set; }
}
public class RootObject
{
public List<Modelo> modelos { get; set; }
public List<Ano> anos { get; set; }
}
公共类Modelo
{
公共字符串nome{get;set;}
public int codigo{get;set;}
}
公开课
{
公共字符串nome{get;set;}
公共字符串codigo{get;set;}
}
公共类根对象
{
公共列表模型{get;set;}
公共列表。请发布JSON和您的模型的摘录,这样我们就可以真正确定错误,没有您的JSON
,任何人都无法帮助。@daniel martins您想实现什么?JSON非常长。下面是链接:您的JSON有一个外部包装对象{“modelos”:[…]
。您需要更改数据模型以反映这一点。如果我上载到正确的数据模型的链接,将生成该链接。
public class Modelo
{
public string nome { get; set; }
public int codigo { get; set; }
}
public class Ano
{
public string nome { get; set; }
public string codigo { get; set; }
}
public class RootObject
{
public List<Modelo> modelos { get; set; }
public List<Ano> anos { get; set; }
}
List<Modelo> plist;
using (var client = new WebClient())
{
var url = @"https://fipe-parallelum.rhcloud.com/api/v1/carros/marcas/59/modelos";
//Download do resultado
var json = client.DownloadString(url);
var root = JsonConvert.DeserializeObject<RootObject>(json);
plist = root.modelos;
}