无法从List <rootobject>对象访问特定数据

时间:2016-06-05 21:38:56

标签: c# json deserialization

我有一个json文件,我已将其反序列化并将数据添加到List<Rootobject>

json文件如下所示。

{ “_编码”:707860 “名字”: “Hurzuf”, “国”: “UA”, “坐标”:{ “LON”:34.283333, “LAT”:44.549999}} { “_id”:519188, “名”: “Novinki”, “国”: “汝”, “坐标”:{ “LON”:37.666668, “LAT”:55.683334}} { “_id”:1283378, “姓名”: “廓尔喀”, “国”: “NP”, “坐标”:{ “LON”:84.633331, “LAT”:28}}

它有2,00,000个这样的行。

我已将其反序列化如下。

public List<Rootobject> list=new List<Rootobject>();
public List<Rootobject> ReadAllCities()
{
    var lines = File.ReadAllLines("Assets/city_list.json");
    foreach (var line in lines)
    {
        var res = JsonConvert.DeserializeObject<Rootobject>(line);
        list.Add(res);
    }
    return list;
}

现在我想从列表中检索“name”属性并创建一个List<String>对象。我试图使用foreach来做到这一点。但我收到编译错误。

它说Rootobject不包含name的定义。

请帮忙......

1 个答案:

答案 0 :(得分:2)

假设Rootobject被定义为......

public class Rootobject {
    public int _id { get; set; }
    public string name { get; set; }
    public string country { get; set; }
    public Coord coord { get; set; }
}

list是......

public List<Rootobject> list = new List<Rootobject>();

填充了对象。

您可以使用LINQ选择name

List<string> namesList = list.Select(i => i.name).ToList();

或者如果您想使用foreach ...

List<string> namesList = new List<string>();
foreach(var item in list) {
    string name = item.name;
    namesList.Add(name);
}