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

Ruby API转JSON时如何去除响应中的反斜杠?

解决Ruby API返回JSON带反斜杠的问题

你的问题根源是双重JSON序列化:
当你调用render json: response.to_json时,Rails的render :json方法本身会自动将传入的对象序列化为JSON格式。而你提前用to_json把ActiveRecord集合转成了JSON字符串,render方法会把这个字符串当作普通字符串再转一次JSON,导致字符串里的双引号被转义成\",也就是你看到的反斜杠。

直接解决方案

修改代码,去掉手动调用的to_json,直接把ActiveRecord集合传给render json::

def get_data
  response = data.select(:xx, :xxx, :xxx, :xxx).where(id: xxx1, xx1: xx1)
  if response.empty?
    respond_to do |format|
      msg = { message: "No records found" }
      format.json { render json: msg }
    end
  else
    respond_to do |format|
      # 直接传入ActiveRecord集合,让render自动处理序列化
      format.json { render json: response }
    end
  end
end

自定义JSON结构的处理方式

如果需要自定义返回的JSON字段(比如添加额外属性、排除默认字段),可以用as_json生成Ruby哈希,再传给render json:——as_json返回的是Ruby对象,不会触发双重序列化:

format.json { 
  render json: response.as_json(
    only: [:xx, :xxx], # 指定只返回这些字段
    methods: [:custom_method] # 额外添加模型中自定义方法的返回值
  ) 
}

验证

修改代码后用Postman重新发起请求,检查响应的JSON结构,反斜杠应该会消失。如果问题依然存在,排查是否有全局中间件或自定义序列化器(比如ActiveModel::Serializer)在额外处理JSON输出。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 17:35:12