You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 06:37:58