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
相关产品推荐
相关产品推荐

