Ruby 将json输出到字符串

Ruby 将json输出到字符串,ruby,json,string,Ruby,Json,String,我一直在自学ruby,但现在我遇到了一个问题,我不断遇到一个错误: mesureitcurrentv.rb:9:in `[]': can't convert String into Integer (TypeError) from mesureitcurrentv.rb:9:in `<main>' 为了清楚起见,我建议使用而不是 键watt不是sensor的子键。它是父数组元素的子键。外部[]表示一个数组,并且至少有一个数字键 因此,您可以通过以下方式直接检索watt: # wat

我一直在自学ruby,但现在我遇到了一个问题,我不断遇到一个错误:

mesureitcurrentv.rb:9:in `[]': can't convert String into Integer (TypeError)
from mesureitcurrentv.rb:9:in `<main>'

为了清楚起见,我建议使用而不是

watt
不是
sensor
的子键。它是父数组元素的子键。外部
[]
表示一个数组,并且至少有一个数字键

因此,您可以通过以下方式直接检索
watt

# watt is a key of the array element [0]
pjson[0]['watt']
=> "703"
但更可靠的是,如果您希望返回多个数组元素,您可以通过以下方式检索与其
sensor\u id
s配对的所有元素:

pjson.map { |s| [s['sensor']['sensor_id'], s['watt']] }
它将返回一个数组,如

[["0", "703"]]
或使用
传感器标题

pjson.map { |s| [s['sensor']['sensor_title'], s['watt']] }
=> [["sensor 0", "703"]]

为了清楚起见,我建议使用而不是

watt
不是
sensor
的子键。它是父数组元素的子键。外部
[]
表示一个数组,并且至少有一个数字键

因此,您可以通过以下方式直接检索
watt

# watt is a key of the array element [0]
pjson[0]['watt']
=> "703"
但更可靠的是,如果您希望返回多个数组元素,您可以通过以下方式检索与其
sensor\u id
s配对的所有元素:

pjson.map { |s| [s['sensor']['sensor_id'], s['watt']] }
它将返回一个数组,如

[["0", "703"]]
或使用
传感器标题

pjson.map { |s| [s['sensor']['sensor_title'], s['watt']] }
=> [["sensor 0", "703"]]

前面的回答说明您的打字错误来自该行

pjson = JSON[response.body]
事实并非如此;它来自

p pjson["sensor"]["watt"].  
JSON[x]
JSON.parse(x)
可以互换

抛出TypeError是因为pjson是一个数组,而不是散列,并且只接受整数位置(例如,
pjson[0]
pjson
是一个数组,因为虽然原始json文本只有一个顶级哈希对象,但它嵌套在一个数组中(初始“[”)

此外,正如Michael的回答所指出的,
“watt”
不是
“sensor”
的子键——它是顶级散列中的一个键。因此,您需要的是
pjson[0]
获取散列对象,然后
pjson[0][“watt”
获取
“watt”
的值(在本例中为“703”)


前面的回答说明您的打字错误来自该行

pjson = JSON[response.body]
事实并非如此,而是来自于

p pjson["sensor"]["watt"].  
JSON[x]
JSON.parse(x)
可以互换

抛出TypeError是因为pjson是一个数组,而不是散列,并且只接受整数位置(例如,
pjson[0]
)。
pjson
是一个数组,因为原始json文本只有一个顶级散列对象,它嵌套在数组中(初始“[”)

此外,正如Michael的回答所指出的,
“watt”
不是
“sensor”
的子键——它是顶级散列中的一个键。因此,您需要的是
pjson[0]
获取散列对象,然后
pjson[0][“watt”
获取
“watt”
的值(在本例中为“703”)


也许
pjson[0][“sensor”][“watt”][/code>也许
pjson[0][“sensor”][“watt”][/code>从来都不知道
JSON][/code>是作为一种方法存在的,但很抱歉在学校的一天里测试了这一点,因为我不得不抽空去做一个答案,而这个答案从来都不知道
JSON][]
作为一种方法存在,但遗憾的是,在学校的一天里测试了这种方法,因为我不得不抽出时间来批改答案