【发布时间】:2015-07-31 13:21:17
【问题描述】:
我需要在线从 JSON 填充一个组合框。它是一个 C# 中的 WindowsForms 项目。 PHP 页面返回以下字符串:
[{"user_id":"1","first_name":"Joao","last_name":"Silva"},{"user_id":"2","first_name":"Maria","last_name":"Santos"},{"user_id":"3","first_name":"Rosa","last_name":"Costa"}]
user_id 是组合框 ID,first_name + last_name 是文本。我尝试了很多方法,但没有一个能正常工作。有什么建议吗?
我的一个尝试:
public class User
{
public int user_id { get; set; }
public string first_name { get; set; }
public string last_name { get; set; }
}
public class LegendsUsers
{
public int user_id { get; set; }
public string first_name { get; set; }
public string last_name { get; set; }
}
public class RootObject
{
public List<User> Users { get; set; }
public List<LegendsUsers> LegendsUsers { get; set; }
}
public class ComboboxItem
{
public string Text { get; set; }
public object Value { get; set; }
public override string ToString()
{
return Text;
}
}
String resposta = new
WebClient().DownloadString("http://www.sample.com/readjson.php");
var x = JsonConvert.DeserializeObject<RootObject>(resposta);
foreach (var user in x.Users)
{
ComboboxItem item = new ComboboxItem();
item.Text = user.first_name + " " + user.last_name;
item.Value = user.user_id;
comboBox1.Items.Add(item);
}
错误:
Newtonsoft.Json.JsonSerializationException:无法将当前 JSON 数组(例如 [1,2,3])反序列化为类型“NB_WBF_Demo.NB_WBF_Demo+RootObject”,因为该类型需要 JSON 对象(例如 {"name":"value "}) 正确反序列化。 要修复此错误,请将 JSON 更改为 JSON 对象(例如 {"name":"value"})或将反序列化类型更改为数组或实现集合接口的类型(例如 ICollection、IList),例如可以从 JSON 数组反序列化。 JsonArrayAttribute 也可以添加到类型中以强制它从 JSON 数组反序列化。 路径'',第 1 行,位置 1。
【问题讨论】:
-
你尝试了哪些方法?你想在这里展示吗?
-
你应该把它解析为对象然后使用它!有哪些方法?除了上面的 JSON,我什么都看不到,告诉我们你做了什么。
-
在您的尝试中什么不起作用?编译时错误?例外?不相关的结果?
-
我更新了代码和返回的错误。