我有一个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的定义。
请帮忙......
答案 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);
}