如何将HTTParty返回的JSON数据传入OpenStruct并存入collection
从HTTParty响应生成OpenStruct集合
没问题,我来帮你把手动初始化的collection改成从HTTParty的响应数据里自动填充,具体步骤和代码如下:
首先,HTTParty的get请求返回的响应对象,自带了parsed_response方法,可以直接把JSON格式的响应转换成Ruby哈希,不用额外手动解析。结合你的示例响应结构(外层是包含:x键的哈希,对应的值是一个对象数组),我们可以这样修改代码:
require 'httparty' require 'ostruct' require 'nokogiri' # 发送API请求并获取响应 response = HTTParty.get('http://localhost:3000/api/v2/teste') # 从解析后的响应数据中取出目标数组 # 注意:如果API返回的JSON键是字符串(比如"x"),就改成response.parsed_response["x"] response_items = response.parsed_response[:x] # 遍历数组,将每个哈希元素转换为OpenStruct,生成最终的collection collection = response_items.map do |item| OpenStruct.new( # 兼容JSON解析后的键是符号或字符串的情况 testex: item[:Testex] || item['Testex'], testey: item[:testey] || item['testey'] ) end
小说明:
response.parsed_response会自动处理JSON格式的响应,帮你转换成Ruby可操作的哈希结构。- 加
item[:Testex] || item['Testex']是为了兼容不同的解析情况——有些时候HTTParty会把JSON的键转换成符号,有些时候保留字符串,这样写能确保你总能拿到对应的值。 map方法会遍历响应里的数组元素,逐个转换成OpenStruct,最终得到的collection就是和你手动初始化结构一致,但数据完全来自API响应的数组啦。
内容的提问来源于stack exchange,提问作者Ailton
相关产品推荐
相关产品推荐

