2017-05-22 17 views
0

Whooshの検索結果からJSONのシリアライズ可能なデータをクライアントに返すことができますか?Whooshの検索結果がJsonのシリアル化可能ではありません

ヒューという音検索出力(Pythonのオブジェクトのリスト):これをやって

[<Hit {'content': 'This is the second example.', 'path': '/b', 'icon': '/icons/sheep.png', 'title': 'Second try'}>, <Hit {'content': 'Examples are many second.', 'path': '/c', 'icon': '/icons/book.png', 'title': "Third time's the charm"}>] 

エラー:私は別のクラス

class DataSerializer(serializers.Serializer): 

    icon=serializers.CharField() 
    content=serializers.CharField() 
    path=serializers.CharField() 
    title=serializers.CharField() 

が、エラーを作るしようとしている

return JsonReponse({"data": whoosh_results}) 



TypeError: <Hit {'content': 'This is the second example.', 'path': '/b', 'icon': '/icons/sheep.png', 'title': 'Second try'}> is not JSON serializable 

ヒットオブジェクトに属性 'アイコン'がないことになります

+0

検索に使用したコードを表示できますか? – zaidfazil

+2

'dict'でラップしようとしましたか? 'return JsonReponse({" data ":dict(whoosh_results)})のように' – Igonato

答えて

1

@Igonatoが指摘するように、あなたはあなたがそれらJSON serializableすることができますdictでごwhoos_resultsをラップする場合:

response = dict(whoosh_results) 
return JsonReponse({"data": response) 

あなたも出て、あなたの辞書の個々の部分を取ることができます:

return JsonReponse({"content": response['content'], 'path': response['path']}) 

幸運を:)

+0

配列をループして、各Pythonオブジェクトを操作して動作させる必要がありました。ありがとう! – user3226932

+0

No prob mate :) –

関連する問題