【发布时间】:2017-06-02 21:24:46
【问题描述】:
我正在将 JSON 字符串反序列化为 C# 中的字典,但是我想按值对字典进行排序,以便将其显示在高分表上。现在字典按固定顺序返回。
var temp = Json.Deserialize(www.text) as Dictionary<string,object>;
if (temp != null)
{
data = (List<object>)temp["_items"];
}
JSON 字符串
"_items":[
{
"_updated":"Thu, 01 Jan 1970 00:00:00 GMT",
"_id":"-",
"Name":"John Doe",
"_links":{
"self":{
"href":"Players/-",
"title":"Player"
}
},
"_created":"Thu, 01 Jan 1970 00:00:00 GMT",
"FacebookId":XXXXX,
"HighScore":8862,
"_etag":"-"
},
{
"_updated":"Thu, 01 Jan 1970 00:00:00 GMT",
"_id":"-",
"Name":"John Smith",
"_links":{
"self":{
"href":"Players/-",
"title":"Player"
}
},
"_created":"Thu, 01 Jan 1970 00:00:00 GMT",
"FacebookId":XXXXXX,
"HighScore":32000,
"_etag":"-"
}
],
细胞创建
var dict = (Dictionary<string, object>) data[row];
// Set Name
cell.nameText.text = dict["Name"].ToString();
// Set score
cell.score.text = string.Format("{0:n0}", dict["HighScore"]);
// Fb Profile IMG
StartCoroutine(getFBPicture(cell.image, dict["FacebookId"].ToString()));
【问题讨论】:
-
我推荐使用 LINQ:stackoverflow.com/questions/5949904/…
-
@ISHIDA 通过 JSON 中显示的 HighScore 变量
-
“现在字典按固定顺序返回”——嗯,不是按照明确定义的、记录在案的顺序。您应该将
Dictionary<,>视为无序集合。例如,您现在看到的任何特定顺序不保证是您在另一个版本中看到的顺序。 (添加或删除一个项目可能会改变整个订单。) -
在我看来,明智的做法是创建一个类型(例如
Player)来将每个值反序列化为...,而不是Dictionary<string, object>
标签: c# json linq dictionary