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

Ruby中JSON数组转Base64编解码方法及TypeError报错解决

解决Ruby中JSON数组的Base64编码/解码问题

错误原因

你遇到的TypeError是因为Base64.encode64仅接受字符串类型的输入,但你直接传入了Ruby数组对象,导致无法完成类型转换。

正确实现步骤

要完成JSON数组的Base64编解码,需要先把Ruby数组转换成标准JSON字符串,再进行Base64操作;解码时则反向操作:Base64解码得到JSON字符串,再转回Ruby对象。

修正后的代码

require "base64"
require "json"

# 原始Ruby数组
data = [{"name":"test","class":"abc","roll":"1122","address":"xyz","pincode":"12345"}]

# 1. 将Ruby数组转换为JSON字符串
json_str = JSON.generate(data)

# 2. Base64编码
enc = Base64.encode64(json_str)
puts "编码结果:"
puts enc

# 3. Base64解码得到JSON字符串
decoded_json_str = Base64.decode64(enc)

# 4. 将JSON字符串转回Ruby数组
decoded_data = JSON.parse(decoded_json_str)
puts "\n解码后的数据:"
p decoded_data

代码说明

  • JSON.generate(data):把Ruby数组/哈希结构转换成符合JSON规范的字符串,这是Base64编码的必要前提。
  • Base64.encode64(json_str):对JSON字符串进行Base64编码,得到可传输的编码字符串。
  • JSON.parse(decoded_json_str):将解码后的JSON字符串重新转换为Ruby数组,恢复原始数据结构。

输出示例

编码结果会是类似这样的Base64字符串:

W3sibmFtZSI6InRlc3QiLCJjbGFzcyI6ImFiYyIsInJvbGwiOiIxMTIyIiwiYWRkcmVzcyI6Inh5eiIsInBpbmNvZGUiOiIxMjM0NSJ9XQ==

解码后的数据会和原始数组完全一致:

[{"name"=>"test", "class"=>"abc", "roll"=>"1122", "address"=>"xyz", "pincode"=>"12345"}]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 07:40:26