如何将 json 解析为 C# 并读取值
how to parse json to c# and read values
好的,我需要从在线网络服务将 JSON 解析为 c#。这是我第一次解析 JSON,我在控制台应用程序方面还不是很擅长,所以我真的需要你的帮助。
在我解析 JSON 之后,我需要创建一个应用程序,如果温度达到某个随机值(比如说 150 度),它将以 "Turn off" 响应。
到目前为止,这是我的代码...
static void Main(string[] args)
{
WebClient webClient = new WebClient();
var data = webClient.DownloadString("http://api.thingspeak.com/channels/135/feed.json");
JObject o = JObject.Parse(data);
Console.WriteLine("Channel: " + o["channel"]);
Console.ReadLine();
}
这是我显示的内容。
我不知道我这样做是否正确,但我确实显示了一些数据。关于如何继续的任何想法?
谢谢!
如果我转到 http://api.thingspeak.com/channels/135/feed.json ,这就是我得到的结果:
{"channel":{"id":135,"name":"Thermometer","description":"Wireless
outdoor thermometer (Electric Imp, TI TMP102 sensor, 4 x AA Energizer
L91).","latitude":"55.652072","longitude":"12.546301","field1":"Temperature","created_at":"2011-02-23T22:43:37Z","updated_at":"2015-10-19T22:40:08Z","elevation":"20m","last_entry_id":61335},"feeds":[{"created_at":"2015-10-18T22:50:09Z","entry_id":61240,"field1":"6.8125"},{"created_at":"2015-10-18T23:05:17Z","entry_id":61241,"field1":"6.75"},
.....
{"created_at":"2015-10-19T21:55:03Z","entry_id":61332,"field1":"9.875"},{"created_at":"2015-10-19T22:10:04Z","entry_id":61333,"field1":"9.875"},{"created_at":"2015-10-19T22:25:06Z","entry_id":61334,"field1":"9.875"},{"created_at":"2015-10-19T22:40:08Z","entry_id":61335,"field1":"9.875"}]}
中间是其他值。 "Feeds"
部分是数组,其中 "field1"
是温度,因为 "channel"
在这里有点像传说。有些条目带有时间戳,给定一个 ID,然后是一个我认为是温度的值。
因此,您必须转换 Feeds
的最后一个条目,然后您将获得最新的温度,您仍然必须将其包装在计时器中,以便它重复获取最新读数并添加在此处以您想要的任何形式发送警报的逻辑。
好的,我需要从在线网络服务将 JSON 解析为 c#。这是我第一次解析 JSON,我在控制台应用程序方面还不是很擅长,所以我真的需要你的帮助。
在我解析 JSON 之后,我需要创建一个应用程序,如果温度达到某个随机值(比如说 150 度),它将以 "Turn off" 响应。
到目前为止,这是我的代码...
static void Main(string[] args)
{
WebClient webClient = new WebClient();
var data = webClient.DownloadString("http://api.thingspeak.com/channels/135/feed.json");
JObject o = JObject.Parse(data);
Console.WriteLine("Channel: " + o["channel"]);
Console.ReadLine();
}
这是我显示的内容。
我不知道我这样做是否正确,但我确实显示了一些数据。关于如何继续的任何想法?
谢谢!
如果我转到 http://api.thingspeak.com/channels/135/feed.json ,这就是我得到的结果:
{"channel":{"id":135,"name":"Thermometer","description":"Wireless outdoor thermometer (Electric Imp, TI TMP102 sensor, 4 x AA Energizer L91).","latitude":"55.652072","longitude":"12.546301","field1":"Temperature","created_at":"2011-02-23T22:43:37Z","updated_at":"2015-10-19T22:40:08Z","elevation":"20m","last_entry_id":61335},"feeds":[{"created_at":"2015-10-18T22:50:09Z","entry_id":61240,"field1":"6.8125"},{"created_at":"2015-10-18T23:05:17Z","entry_id":61241,"field1":"6.75"},
.....
{"created_at":"2015-10-19T21:55:03Z","entry_id":61332,"field1":"9.875"},{"created_at":"2015-10-19T22:10:04Z","entry_id":61333,"field1":"9.875"},{"created_at":"2015-10-19T22:25:06Z","entry_id":61334,"field1":"9.875"},{"created_at":"2015-10-19T22:40:08Z","entry_id":61335,"field1":"9.875"}]}
中间是其他值。 "Feeds"
部分是数组,其中 "field1"
是温度,因为 "channel"
在这里有点像传说。有些条目带有时间戳,给定一个 ID,然后是一个我认为是温度的值。
因此,您必须转换 Feeds
的最后一个条目,然后您将获得最新的温度,您仍然必须将其包装在计时器中,以便它重复获取最新读数并添加在此处以您想要的任何形式发送警报的逻辑。