平台:C# IDE:Visual Studio 2010
我正在尝试从json对象中读取所有值并将其放在字符串列表中,我正在为Json反序列化但是它会引发错误...
这是我试过的
List<string> lstPName = new List<string>();
JavaScriptSerializer strJsonSer = new JavaScriptSerializer();
localhost.Pstats objStats = new localhost.Pstats();
var strJson = objStats.GetAutoCompleteData(txtSearchBox.Text.Trim());
lstPName = strJsonSer.DeserializeObject<string>(strJson);
这是Json对象持有的内容
[{"PlayerName":"WA Mota"},{"PlayerName":"Atif Ahmed"}]
所以,我需要在列表中添加玩家名称值...
答案 0 :(得分:0)
简单明了的解决方案:
var strJson = "[{\"PlayerName\":\"WA Mota\"},{\"PlayerName\":\"Atif Ahmed\"}]";
var strJsonSer = new JavaScriptSerializer();
var list = new List<string>();
var result = strJsonSer.DeserializeObject(strJson) as object[];
if (result != null)
{
foreach (Dictionary<string, object> x in result)
{
list.Add(x["PlayerName"].ToString());
}
}
或者,如果您更喜欢LINQ - 您可以使用以下代码来代替foreach
循环:
list = result
.Cast<Dictionary<string, object>>()
.Select(x => x["PlayerName"].ToString())
.ToList();
关键思路:DeserializeObject
用于解析像你这样的JSON数据,为你提供Dictionary<string, object>
数组,其中key是JSON属性名,值是JSON属性值。数组大小等于JSON数据中的对象数。