读取Json对象并将值放入String的List中

时间:2015-02-24 11:08:30

标签: c# json visual-studio-2010

平台: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"}]

所以,我需要在列表中添加玩家名称值...

1 个答案:

答案 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数据中的对象数。