对象类型' AttrList'不是JSON可序列化的

时间:2017-06-21 12:20:56

标签: json django python-3.x

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)

但结果是:

the result here

那我怎么解决这个问题呢?谢谢!我希望不是列表类型! 我希望浏览器中的视图是str而不是list.I'我试图修复它。

2 个答案:

答案 0 :(得分:0)

您可以尝试使用以下代码替换re_datas.append(source["job_name"])

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

从您的图片看起来,re_datas应该基本上是一个字符串列表。

问题很可能是source [“job_name”]正在返回一个json不了解如何序列化的对象。如果您只需要此对象的字符串表示形式,请尝试使用str(source [“job_name”])获取它。

如果它更复杂,您需要使您的类json可序列化 - 请查看How to make a class JSON serializable

答案 1 :(得分:0)

[ x for x in source["job_name"] ]

source['job_name'](AttrList)可以迭代并存储在数组中。