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

如何在API请求中以字符串形式发送JSON?RoR项目实操问询

如何在API请求中以字符串形式发送JSON(Ruby 2.5.0 + Rails 5)

嘿,针对你的需求——把一段(哪怕是无效的)JSON作为字符串值嵌入到API请求的JSON体里(比如{"data": "你的JSON内容"}),我给你整理了具体的实现步骤,在Ruby on Rails里非常好处理:

核心思路

要实现这个需求,关键是把待传递的JSON内容转义成合法的字符串,这样它就能安全地作为外层JSON对象的某个键的取值,不会破坏外层JSON的结构。

具体实现步骤

1. 定义你的原始JSON内容

先把那段待传递的内容存成一个字符串,哪怕它是不完整/无效的JSON也没关系:

raw_json = <<~RAW_JSON
{ "Lines": [{ "Words": [{ "WordText": "Coles", "Left": 53, "Top": 59, "Height": 20, "Width": 63 }, { "WordText": "Supermarkets", "Left": 130, "Top": 58, "Height": 24, "Width": 153 }, { "WordText": "Austral", "Left": 296, "Top": 58, "Height": 21, "Width": 85 }, { "Wo...
RAW_JSON

2. 转义字符串,使其能嵌入外层JSON

Ruby的JSON库自带的generate方法可以帮你自动转义所有特殊字符(比如双引号、换行符),这比手动转义更可靠:

# Rails项目里默认已经引入了JSON库,无需额外require
escaped_json_str = JSON.generate(raw_json)

3. 构建合法的请求体JSON

把转义后的字符串放到你需要的键(比如data)里,再转成最终的请求体:

request_body = { data: escaped_json_str }.to_json

这时候request_body就是符合你要求的格式:{"data": "转义后的完整JSON字符串"}

4. 发送API请求

用Rails常用的HTTP客户端发送请求时,记得设置Content-Type为application/json,确保服务器能正确解析请求体。这里举个Net::HTTP的例子(Rails自带,不需要额外安装依赖):

uri = URI('https://你的API地址.com/接口路径')
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = true if uri.scheme == 'https'

request = Net::HTTP::Post.new(uri)
request['Content-Type'] = 'application/json'
request.body = request_body

response = http.request(request)

# 可根据需求处理响应
puts response.body

关键注意点

  • 不要手动转义特殊字符:比如自己替换双引号为\",很容易漏处理其他特殊字符(比如反斜杠、换行),用JSON.generate是最稳妥的方式。
  • 哪怕原始内容是无效JSON也没关系:因为我们只是把它当作普通字符串传递,API接收的是这个字符串本身,不会去解析它(除非API那边有特殊逻辑),所以原始内容的完整性不影响外层请求的合法性。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 09:35:18