0

Python で奇妙な動作を見つけましたが、その理由がわかりません。

これは、アイテムとリストを作成する方法です。

def createItemJson(self,id,url):
    ret={}
    ret['id']=id
    ret['url']=url
    return ret


def createListJson(self,i):
    ret_l = []
    for i in range(0,i,1):
        ret_l.append(self.createItemJson(i, i))
    return ret_l

そして、これは 3 つの要素のリストの出力です。

[{'url': 0, 'id': 0}, {'url': 1, 'id': 1}, {'url': 2, 'id': 2}]

この文字列をシェル A で実行すると、次のようになります。

for v in data

3つのオブジェクトを印刷できます。NBlen(data)は 3 です。

今、私はこのデータをデータベースにテキストフィールドとして保存しています(正しいですか?)。オブジェクトを取得するlenと、値が63になります。

基本的に、Django はそれを文字列と見なします。私に何ができる?json.load を実行しようとしましたが、うまくいきません。

4

1 に答える 1

1

表示している例にはJSONはありません。Python辞書があります。次に「テキストフィールドに保存」すると(それをどのように行っているかを正確に示すことが役立つことに注意してください)、おそらく文字列としてそのフィールドにダンプしただけです。それはまだJSONではなく、Python dictの文字列表現になりましたが、これはまったく同じではありません。json.loadJSONではないため、「機能しません」(もう一度、正確なエラーメッセージが役立ちます)。

json.dumps(my_dict)データベースに保存する前、およびjson.loads()途中で使用してみることができます。または、Googleのクイック検索で見つかる可能性のある多くのJSONField実装の1つを使用します。

于 2012-11-19T16:32:13.137 に答える