2017-06-21 12 views
0
class SearchSuggest(View): 
def get(self, request): 
    key_words = request.GET.get('s','') 
    re_datas = [] 
    if key_words: 
     s = JobType.search() 
     s = s.suggest('my_suggest', key_words, completion={ 
      "field":"suggest", "fuzzy":{ 
       "fuzziness":2 
      }, 
      "size": 10 
     }) 
     suggestions = s.execute_suggest() 
     for match in suggestions.my_suggest[0].options: 
      source = match._source 
      re_datas.append(str(source["job_name"])) 

    # return HttpResponse(json.dumps(re_datas), content_type="application/json") 
    return HttpResponse(json.dumps(re_datas), content_type="application/json") 
    # re_datas=list(re_datas) 

結果でもないのですか?ありがとう!私はリストのタイプを期待していない! ブラウザの表示がstrであってlistではないことを希望します。私はそれを修正しようとしています。オブジェクトをJSONシリアライズ可能な

+0

ここで十分な情報はありません。 AttrListとは何ですか?それはどこから来たのですか?これらの提案を返すのは何ですか?あなたは実際にどのような出力をしたいですか? –

+0

自分自身に質問してください:[json](https://docs.python.org/3/library/json.html#json.JSONEncoder)はオブジェクトをシリアル化する方法をどのように知っていますか? – Melvyn

+0

常に最初の配列アイテムが必要ですか?もしそうなら - re_datas.append(str(source ["job_name"] [0])) – perry

答えて

0

あなたがre_datas.append(source["job_name"])を交換してくださいことができます:

re_datas.append(str(source["job_name"])) 

はre_datasは基本的に文字列のリストでなければならないこと、あなたのイメージからのように見えます。

ソース["job_name"]がjsonがシリアル化する方法を理解できないオブジェクトを返す可能性があります。このオブジェクトの文字列表現が必要な場合は、str(source ["job_name"])で取得してみてください。

もっと複雑な場合は、クラスjsonをシリアライザブルにする必要があります。チェックアウトHow to make a class JSON serializable

+0

この方法は素晴らしいです、私はプログラムの初心者です。問題です。ありがとう!しかし、それは私の期待通りに応答しない、それはリストのタイプに応答する。ちょうど上記のように。しかし!ありがとう! – ileadall42

関連する問題