1

ipad 应用程序将此 json 发送给我,我通过 request.POST.get 读取它,然后通过ast.literal_eval 解析它

u'[\n {\n "type" : 2,\n "dateCreated" : "Wed, 24 Apr 2013 17:20:50 0100",\n "dateStart" : "Wed, 24 Apr 2013 18:00:00 0100",\n "appointmentId" : 0,\n "withP" : [\n\n ],\n "seenTime" : null,\n "ofCWithId" : 2,\n "ofClientWithId" : 68,\n "dateEnd" : "Wed, 24 Apr 2013 19:00:00 0100",\n "comments" : "Test test test\n.\n( ) \'\' test \'\' \' test \'\n",\n "inLocation" : null,\n ...bla bla bla...]'

我收到此错误:

    'comments' : 'Test test test
                               ^
SyntaxError: EOL while scanning string literal

我可以理解换行符是问题,但我不知道如何解决。我正在使用 django 1.4.2 python 2.7.3

我真的很感谢你的帮助

4

2 回答 2

-1

尝试在字符串的开头和结尾添加 \'\'\'。

像这样:

u'\'\'\'[\n ... bla bla bla...]\'\'\''
于 2013-04-25T14:57:03.063 回答
-1

不应该使用ast.literal_eval来读取 JSON。为了读取 JSON,有一个名为json.

使用它加载 JSON 数据:

import json
data = """{"type":null,"dateCreated":"Wed, 24 Apr 2013 17:20:50 0100"}"""
json_data = json.loads(data)

ast.literal_eval用于评估表示为字符串的 Python 代码。它不是为处理 JSON 数据而设计的。 null在 JSON 中是None在 Python 字典中,作为一个不同的例子。

您收到错误的另一个原因是您尝试解析的JSON无效。看起来存在服务器端问题,或者您从服务器获取 JSON 数据的方式存在问题。

换行符 ( \n) 应在字符串中进行转义。此外,根据JSON 规范',不应转义。或者,您可以使用参数 with来允许字符串中的控制字符。strict=Falsejson.loads

您示例中的有效 JSON 如下所示:

{
    "type": 2,
    "dateCreated": "Wed, 24 Apr 2013 17:20:50 0100",
    "dateStart": "Wed, 24 Apr 2013 18:00:00 0100",
    "appointmentId": 0,
    "withP": ["\\n\\n"],
    "seenTime": null,
    "ofCWithId": 2,
    "ofClientWithId": 68,
    "dateEnd": "Wed, 24 Apr 2013 19:00:00 0100",
    "comments": "Test test test\\n.\\n( ) '' test '' ' test '\\n",
    "inLocation": null
}
于 2016-11-06T09:21:47.620 回答