【问题标题】:Parsing JSON feed with Ruby for use in Dashing Dashboard使用 Ruby 解析 JSON 提要以用于 Dashing Dashboard
【发布时间】:2017-02-01 04:41:19
【问题描述】:

第一次在这里发帖,你知道吗,好吗?

我正在使用服务器上的 JSON 提要在 Dashing (http://dashing.io/) 中设置仪表板,如下所示:

{  
   "error":0,
   "message_of_the_day":"Welcome!",
   "message_of_the_day_hash":"a1234567890123456789012345678901",
   "metrics":{  
      "daily":{  
         "metric1":"1m 30s",
         "metric2":160
      },
      "monthly":{  
         "metric1":"10m 30s",
         "metric2":"3803"
      }
   },

我一直在尝试从提要中获取数据,并且通过 Python 成功地做到了这一点:

import json
import urllib2

data = {
        'region': "Europe"
}

req = urllib2.Request('http://192.168.1.2/info/handlers/handler.php')
req.add_header('Content-Type', 'application/json')

response = urllib2.urlopen(req, json.dumps(data))

print response.read()

但是我还没有成功,并且在 Ruby 中遇到了很多错误。 谁能指出我在 Ruby 中解析这个的正确方向? 我尝试编写一个基本脚本(保持简单并且在 Dashing 之外)没有提取任何数据。

#!/usr/bin/ruby
require 'httparty'
require 'json'

response = HTTParty.get("http://192.168.1.2/info/handlers/handler.php?region=Europe") 

json = JSON.parse(response.body)

puts json

【问题讨论】:

  • 您发布的 JSON 中缺少一个结束“}”。
  • 我想如果Content-Type是application/json,那么HTTParty会为你解析。错误是什么? puts response 显示什么?

标签: python json ruby dashing


【解决方案1】:

在 python 代码中,您发送 JSON 并添加标头。我敢打赌,在 ruby​​ 中这样做也是有意义的。下面的代码未经测试,因为我无法测试它,但它应该会引导你走向正确的方向:

#!/usr/bin/ruby
require 'httparty'
require 'json'

response = HTTParty.post(
  "http://192.168.1.2/info/handlers/handler.php",
  headers: {'Content-Type', 'application/json'},
  query: { data: { 'region' => "Europe" } } 
  # or maybe query: { 'region' => "Europe" }
) 

puts response.inspect

【讨论】:

  • 如果@mudasobwa 是正确的——我认为他们可能是正确的——你应该能够通过打印出响应正文puts response.body 来弄清楚发生了什么,它应该打印出json。如果它打印出一个 HTML 页面,那么请求中缺少内容类型就是问题所在。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-10-23
  • 2011-09-18
相关资源
最近更新 更多