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

如何使用HTTParty将API返回的非JSON非哈希竖线分隔数据转为哈希或数组

格式说明

你拿到的返回结果是管道分隔值(PSV,Pipe-Separated Values)格式,属于纯文本类分隔格式,和CSV属于同类,只是分隔符用竖线|,完全不是XML格式。


实现代码

你可以直接按行拆分解析,也可以用Ruby自带的CSV库做更稳妥的解析,两种方案如下:

方案1:手动拆分(简单场景用)

# 注意请求地址要补全http/https协议头,否则会报错
response = HTTParty.get("http://www.apiurl.com")
# 按行拆分响应内容,过滤空行
lines = response.body.split("\n").reject(&:empty?)
# 提取表头,拆分后清除字段前后的多余空格
headers = lines.first.split("|").map(&:strip)
# 逐行转换为哈希,组成最终的数组
@list = lines[1..-1].map do |line|
  values = line.split("|").map(&:strip)
  headers.zip(values).to_h
end

方案2:用CSV库解析(复杂场景更稳妥,可处理字段内包含分隔符、引号的情况)

require 'csv'

response = HTTParty.get("http://www.apiurl.com")
# 直接指定分隔符为|,自动识别表头
@list = CSV.parse(
  response.body,
  headers: true,
  col_sep: '|',
  skip_blanks: true
).map(&:to_h)

使用示例

解析完成后你就可以按需求遍历取值了:

@list.each do |item|
  # 输出所有Number字段值
  puts item['Number']
  # 也可以直接取其他字段,比如 item['Station name']、item['Latitude']
end

内容的提问来源于stack exchange,提问作者yellowskull

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 14:54:04