繁体   English   中英

如何将REQUEST响应转换为Ruby嵌套哈希/数组

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM