【问题标题】:Creating a nested JSON request with Python使用 Python 创建嵌套的 JSON 请求
【发布时间】:2011-09-27 13:42:04
【问题描述】:

用户需要传递一个 json 对象作为请求的一部分。它看起来像这样:

   {"token" :"ayaljltja",
   "addresses": [
      {'name':'Home','address':'20 Main Street', 
       'city':'new-york'}, 
      {'name':'work', 'address':'x Street', 'city':'ohio'}
   ]}

我现在有两个问题。首先,我不知道如何通过重新创建嵌套 POST 来测试这段代码。我可以成功发布一个字典,但是在 JSON 对象中发布地址列表让我很困惑。

仅使用 cURL,我该怎么做?我该如何使用 urrlib2?

我的第二个问题是反序列化服务器端的 JSON POST 对象。我想我只需要看到一个成功的 POST 来确定输入(然后用 json 模块反序列化它)。

有什么建议吗?

【问题讨论】:

    标签: python json serialization curl deserialization


    【解决方案1】:

    首先确保您的 JSON 有效。将其粘贴到JSONLint 网页中。

    目前您的 JSON 有两个问题:

    1. "token" :"ayaljltja""addresses": [...] 之间没有逗号
    2. 单引号不是分隔 JSON 字符串的有效方式,请将它们全部替换为双引号。

    【讨论】:

    • 嘿杰里米,谢谢。我的 json 在现实生活中实际上是有效的。只是 SO 中的一个错字。当我查看请求对象时,问题在于“地址”对象如下所示: [u"{'city': 'new-york', 'name': 'Home', 'display_value': '2 Main Street'}", u"{'city': 'new-york', 'name': 'Home', 'display_value': '2 Main Street'}"].我不知道为什么我的列表中会出现 unicode 对象。当我尝试序列化这些对象时,序列化程序失败(我相信是因为单引号)。
    【解决方案2】:

    使用命令行 curl,将您的 JSON 保存到一个文件中,比如 data.json。那就试试:curl -X POST -d @data.json @987654321@

    也可以将 JSON 直接输入到 -d 参数中,但是(听起来您已经知道)您必须完全正确地引用和转义。

    【讨论】:

    • 嘿伊恩,我害怕这样的事情。引用/转义是我在这里意识到的一种痛苦。关于使用 urllib2 或 urllib 让我免于这种烦恼的任何想法?我无法用 urlencode 弄清楚。
    • stackoverflow.com/questions/4348061/… 看起来涵盖了您正在尝试做的事情。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-10-21
    • 2017-09-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多