我经常发现自己开始探索新的API并找回大型JSON对象。而且每次我都努力寻找一种方法来正确显示它们的缩进时,以便我可以轻松地看到结构并确定与任务相关的部分。
现在,我正在探索用于Razberry(家庭自动化)的Z-Wave API。我返回一个JSON,其中包含连接到家庭自动化网络的所有设备。看起来像这样:
而且我不明白为什么Rails会破坏这里显示的方式,以及为什么它无法正确缩进JSON数据。屏幕截图上的输出是此控制器代码的结果:
request = Net::HTTP::Get.new(uri)
request.basic_auth 'admin', 'bla'
response = Net::HTTP.start(uri.hostname, uri.port) do |http|
http.request(request)
end
@devices = JSON.parse(response.body)
render json: @devices
在探索数据结构时,看看现阶段有更多经验丰富的程序员如何处理JSON会很有趣。如何以这种样式显示JSON ?:
{"1":
{"instances":
{"0":{
"commandClasses":
{"32":
{"name":"Basic",
"data":
{"invalidateTime":1462455293,
"updateTime":1462365990,
"type":"empty",
"value":null,
"supported":
{"invalidateTime":1462455293,
"updateTime":1462365990,
"type":"bool",
"value":true},
"version":
您可以使用JSON.pretty_generate()
方法:
例子:
require 'json'
my_json = { :array => [1, 2, 3, { :sample => "hash"} ], :foo => "bar" }
puts JSON.pretty_generate(my_json)
输出:
{
"array": [
1,
2,
3,
{
"sample": "hash"
}
],
"foo": "bar"
}
您的代码:
request = Net::HTTP::Get.new(uri)
request.basic_auth 'admin', 'bla'
response = Net::HTTP.start(uri.hostname, uri.port) do |http|
http.request(request)
end
@devices = JSON.parse(response.body)
render json: JSON.pretty_generate(@devices)
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句