【问题标题】:how to parse json to c# and read values如何将json解析为c#并读取值
【发布时间】:2015-10-19 21:37:02
【问题描述】:

好的,我需要从在线 Web 服务将 JSON 解析为 c#。这是我第一次解析 JSON,我在控制台应用程序中还不是很好,所以我真的需要你的帮助。

解析 JSON 后,我需要创建一个应用程序,如果温度达到某个随机值(比如说 150 度),它将响应“关闭”。

这是我目前的代码...

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();
    }

这就是我显示的内容。

我不知道我这样做是否正确,但我确实显示了一些数据。关于如何继续的任何想法?

谢谢!

【问题讨论】:

  • 该 API 有任何文档吗?找出它所期望的方法和参数。您可以在构建应用程序之前开始使用 Fiddler
  • @VolkanPaksoy 你能检查到 api 的链接吗?
  • 我不确定我是否在这里看到了问题。您已经按照 o["channel"] 调用中的预期方式使用了 JObject。 o["channel"] 返回另一个 JObject,所以只需以相同的方式使用它。例如,您可以写 o["channel"]["id"] 来获取 ID。或者您可以将o["channel"] 的值捕获到一个变量中,然后使用otherVariable["id"]。您还可以创建 JSON 可序列化对象,以便将 JSON 反序列化为强类型 C# 对象。
  • API 记录在这里 -- newtonsoft.com/json 。不要让我们为您阅读。
  • 请注意,返回的数据也有一个“feeds”值,您可以使用它来获取温度读数,然后在“if temp > warning_value then do warning”的地方添加一些逻辑我有什么引号更像是伪代码。

标签: c# json web-services parsing console-application


【解决方案1】:

如果我去 http://api.thingspeak.com/channels/135/feed.json ,这是我得到的结果:

{"channel":{"id":135,"name":"温度计","description":"无线 室外温度计(Electric Imp、TI TMP102 传感器、4 x AA Energizer L91).","纬度":"55.652072","经度":"12.546301","field1":"温度","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 的最后一个条目,然后您将获得最近的温度,您仍然必须将其包装在计时器中,以便它重复获取最新读数并添加逻辑以发送在此处以任何您想要的形式关闭警报。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-02-23
    • 2018-06-23
    • 2020-07-01
    • 2013-06-13
    • 2014-05-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多