【问题标题】:How to send json from Rails如何从 Rails 发送 json
【发布时间】:2019-07-17 07:07:42
【问题描述】:

我从 Python 向 Rails 应用程序发出请求,并得到以下响应: {你'回答':你'好的'} 在 Rails 端代码中是这样的: @res = {'answer'=> '好的'} 渲染 json:@res

这个问题可能出现在 python 端吗?这里的python代码:

import requests
import json
URL1 = 'http://'
PARAMS = {'login': 'asd'}
r = requests.get(url = URL1, params = PARAMS)
data = r.json()
print(data)

我怎样才能得到清晰的 json

【问题讨论】:

    标签: python ruby-on-rails json


    【解决方案1】:

    你可以试试data = r.as_json

    【讨论】:

    • 你的意思是在python方面?如果是,我应该为此添加一些其他库吗?
    • 我想你问过如何从 Rails 发送 json ?因此您可以在响应中使用 .as_json 从 Rails 发送 json。
    【解决方案2】:

    您正在使用 r.json() 专门将响应正文中包含的 JSON 解析为 Python 对象。使用r.text 查看响应正文的文本表示。

    【讨论】:

    • 实际上我需要 JSON 但没有 u'。顺便说一句“你”不是问题,有趣的是为什么会出现这个符号
    • 天啊。 1) 正如我所说,JSON 是发送的字符串,可从r.text 获得。 r.json() 解析 JSON(字符串)成等效的 Python 对象;结果不再是 JSON。决定你想要哪个。 2) u 不存在。在 Python2 中,Unicode 字符串和 ASCII 字符串是有区别的;如果您使用使用repr() 的方法打印出一个字符串,您将得到一个字符串文字,对于ASCII 字符串将是'foo',对于Unicode 字符串将是u'foo';但如果将它们打印为字符串,则只会得到 foo(不带引号,不带前导 u 字形)。
    【解决方案3】:

    在 Rails 控制器中,您可以:

    render :json => data.to_json and return
    

    在 CLI 中你会这样做:

    puts data.to_json
    

    确保在 CLI 代码中包含 json 或兼容的 gem。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-06
      • 2011-08-08
      • 1970-01-01
      • 1970-01-01
      • 2013-03-28
      相关资源
      最近更新 更多