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

JSON を読み取るためにast.literal_evalを使用しないでください。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 データを扱うようには設計されていません。 違いの例として、nullJSON はPython Dictionary にあります。None

エラーが発生するもう 1 つの理由は、解析しようとするJSONが無効であるためです。サーバー側に問題があるか、サーバーから JSON データを取得する方法に問題があるようです。

改行記号 ( \n) は文字列内でエスケープする必要があります。また、JSON 仕様'に従って、エスケープしないでください。または、文字列内の制御文字を許可する引数を使用できます。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 に答える