1

私は周りを検索しましたが、私が知っているのは、どういうわけかJSONが壊れているということだけです. 辞書のリストで json.dumps を呼び出し、それを django モデル オブジェクトに保存しています。呼び出して読み戻そうとするとjson.loadsExpecting property name: line 1 column 2 (char 2)例外がスローされます。

これが私のコードです。会話が既に存在する場合、テキストをメッセージ リストにロードし、新しいものを追加しようとします (ただし、成功しません)。存在しない場合は、空のリストに追加して保存します(これは機能します)。

convo = Conversation()
messages = []
if request.POST.get('convo_pk',''):
    convo = Conversation.objects.get(pk = request.POST['convo_pk'])
    messages = json.loads(convo.text) #this is where it dies
else:
    convo.offer = Offer.objects.get(pk = request.POST['offer_pk'])
new_message = json.loads(request.POST['message'])
messages.append(new_message)
convo.text = messages
convo.save()

django 管理パネルから、これは保存されている json です。

[{u'body': u'this is the message body', u'user_id': u'8', u'name': u'Mark', u'time': u'2013-10-10-16:32'}]
4

3 に答える 3

3

それはJSONではありません。JSON が出力されない理由ast.literal_eval()を調べている間は、 .

>>> ast.literal_eval('''[{u'body': u'this is the message body', u'user_id': u'8', u'name': u'Mark', u'time': u'2013-10-10-16:32'}]''')
[{u'body': u'this is the message body', u'user_id': u'8', u'name': u'Mark', u'time': u'2013-10-10-16:32'}]
于 2013-10-11T06:22:22.223 に答える
0

したがって、機能しなかった理由は、保存する前にテキストをjsonにエンコードするのを忘れていたためです(保存されていたのは、オブジェクトのPython表現にすぎません)。しかし、とにかく全体にjsonfieldを使用することになりました。オブジェクトを自動的に json に変換して保存します。

于 2013-10-12T16:35:42.867 に答える
0

http://jsonlint.com/

このエラーを出しました

Parse error on line 2:
[    {        u'body': u'thisisthe
--------------^
Expecting 'STRING', '}'

「u」を取り除く必要があります

于 2013-10-11T05:43:23.580 に答える