C# 将json解析为字符串以获取特定元素的值

C# 将json解析为字符串以获取特定元素的值,c#,json,json.net,C#,Json,Json.net,我试图使用geonames api获取数据,然后只查找城市名称 我得到了数据,但它是json格式的,我找不到一种方法来获取字符串格式的城市名称。 使用的代码- var data = (JObject)JsonConvert.DeserializeObject(ResultInCSV); string cityname= data["name"].Value<string>(); string cityname= cityname.Split('\n')[0]; //JObject

我试图使用geonames api获取数据,然后只查找城市名称

我得到了数据,但它是json格式的,我找不到一种方法来获取字符串格式的城市名称。 使用的代码-

var data = (JObject)JsonConvert.DeserializeObject(ResultInCSV);
string cityname= data["name"].Value<string>();
string  cityname= cityname.Split('\n')[0];
//JObject obj = JObject.Parse(ResultInCSV);
//string FirstLine = (string)obj["name"];

以下代码行将为您提供城市名称列表

IList<string> cityNames = data["geonames"].Select(gn => gn["name"].ToString()).ToList();
IList cityNames=data[“geonames”]。选择(gn=>gn[“name”].ToString()).ToList();

您可以使用以下任一方法获取城市名称列表:

        var jo = JObject.Parse(jsonString);
        var a =jo["geonames"].Select(city => city["name"].ToString()).ToList();

        //Or
        foreach (var cityInfo in jo["geonames"])
        {
            Console.WriteLine(cityInfo["name"]);
        }
你可以这样做:

List<string> citynames=new List<string>();
for(i=0;i<data.Length;i++)
{
  citynames.Add(data.geonames[i].name);
}
List citynames=new List();

对于(i=0;iYour JSON包含一个名为“geonames”的数组,其中包含一个城市列表(复数)。由于没有名为“name”的根元素,您的代码无法工作。您可以选择“TotalResultCount”和“geonames”,我尝试了'var data=(JObject)jsonInvert.DeserializeObject(ResultInCSV);string cityname=data[“geonames”]。Value()还有,我还是不明白。那么有没有更好的方法从json响应中查找城市名称呢?我建议使用记事本++或升华之类的编辑器将json格式设置为更可读的缩进格式,以帮助您更好地理解其结构。如果这对您有效,您能将答案标记为解决方案吗。
List<string> citynames=new List<string>();
for(i=0;i<data.Length;i++)
{
  citynames.Add(data.geonames[i].name);
}