读取 Json 对象并将值放入字符串列表中

Read Json object and put the values in a List of string

平台:C# IDE: Visual Studio 2010

我正在尝试从 json 对象中读取所有值并将其放入 string 列表中,为此我正在执行 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"}]

因此,我需要将玩家名称值添加到列表中...

简单直接的解决方案:

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> 数组,其中键是 JSON 属性 名称和值是JSON 属性 值。数组大小等于 JSON 数据中的对象数。