控制台显示尝试读取特定 JSON 字段时的"List`1[System.String]"



当我调用Restful Web API时,我收到了来自服务器的JSON字符串作为响应。因此,我使用以下代码将JSON字符串反序列化为.NET对象:

RootObject obj = JsonConvert.DeserializeObject<RootObject>(jsonString);

我的API调用的响应(JSON字符串)如下:

{"Observation":{"FeelsLike":{"Text":["23"]},"WindDirection":{"Value":"SE","Text":["SE"],"ImageKey":"windSE"},"WindSpeed":{"Text":["14km/h"]},"Pressure":{"Text":["102.4kPa"]},"Visibility":{"Text":["16.0km"]},"Ceiling":{"Text":["21900ft"]},"Humidity":{"Text":["70%"]},"Sunrise":{"Text":["06:38"]},"Sunset":{"Text":["19:57"]},"ExpirationTime":{"Value":8286},"RefreshTime":{"Value":1267},"Timestamp":{"GMT":"2014-08-29T15:45","Local":"2014-08-29T11:45","Text":["August 29 2014, 11:45 AM"]},"Icon":{"Value":"OVC","TextKey":"obs24","ImageKey":"wxicon8"},"Temperature":{"Text":["19","°C"]}}} 

现在,我想访问(将23存储到变量中)"FeelsLike":{"Text":["23"]}中的值23,我该怎么做?

我尝试了以下方法,但没有成功:

步骤1)。我将JSON字符串转换为C#类(链接到类代码:http://goo.gl/OTKL4l)在http://json2csharp.com/,我尝试用这行代码访问值23:

Console.WriteLine(obj.Observation.FeelsLike.Text);

但我得到了以下输出:

System.Collections.Generic.List`1[System.String]

如果您查看JSON对象,FeelsLike的键实际上返回了一个列表。因此,通过扩展

FeelsLike.Text

实际上打印了一个列表。如果您想要列表中的第一个对象,请尝试

FeelsLike.Text.get(0); or FeelsLike.Text[0];

Text是一个数组,因此它被反序列化为List<string>(从您在问题末尾发布的字符串值中可以清楚地看出)。这样做:

Console.WriteLine(obj.Observation.FeelsLike.Text.FirstOrDefault() ?? "");

使用JSON.NET库JSON.NET,您可以执行以下操作:

dynamic obj = JObject.Parse(jsonString);

然后用obj.FeelsLike.Text; 访问"FeelsLike":{"Text":["23"]}

相关内容

  • 没有找到相关文章

最新更新