[英]How to convert a REQUEST response to Ruby nested Hash/Array
我正在使用HTTParty进行外部API调用,如下所示:
@result = HTTParty.get('some/url')
结果是一个带有数组的3/4层嵌套JSON对象(尽管结果并不总是相同的,有时嵌套的对象更多,有时数组更多,有时没有数组,等等,但是它总是嵌套对象嵌套对象与数组):
{
"something": "10100014",
"something": "025MH-V0625",
"something": null,
"something": null,
"something": "SALE",
"nested": {
"something": "DETACHED_HOUSE",
"something": null,
"something": "2014",
"something": 0,
"something": 138,
"something": 0,
"something": null,
"something": "A2010",
"something": "M2",
"nested": {
"something": "Tværagervej",
"something": "34A",
"something": "",
"something": null,
"something": "København S",
"something": "2300",
"something": "DK"
}
...
}
现在,我需要遍历结果的键/值(包括嵌套的键/值),但是当我这样做时:
@result.respond_to?(:each)
要么
@result["nested"].respond_to?(:each)
我得到一个false
。 我也尝试过:
@n_result = @result.to_json
和
@n_result = JSON.parse(@result)
但是我都false
了。 有任何想法吗?
此响应似乎不是有效的JSON,缺少了{
和}
。 JSON.parse
没有返回任何异常吗? 我已经尝试过离线:
@result = %Q{
{
"something": "10100014",
"something": "025MH-V0625",
"something": null,
"something": null,
"something": "SALE",
"nested": {
"something": "DETACHED_HOUSE",
"something": null,
"something": "2014",
"something": 0,
"something": 138,
"something": 0,
"something": null,
"something": "A2010",
"something": "M2",
"nested": {
"something": "Tværagervej",
"something": "34A",
"something": "",
"something": null,
"something": "København S",
"something": "2300",
"something": "DK"
}
}
}
}
接着:
@result_r = JSON.parse(@result)
返回:
=> {"something"=>"SALE", "nested"=>{"something"=>"M2", "nested"=>{"something"=>"DK"}}}
当然,重复的键已被跳过。
让您尝试:
@result_r = JSON.parse("{%s}" % @result)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.