복붙노트

[PYTHON] json.dumps 대 flask.jsonify

PYTHON

json.dumps 대 flask.jsonify

플라스크의 목적을 이해하고 있는지 확신 할 수 없습니다. 방법을 방해하십시오. 나는이 JSON 문자열을 만들려고 :

data = {"id": str(album.id), "title": album.title}

하지만 json.dumps로 얻는 것은 flask.jsonify에서 얻는 것과 다릅니다.

json.dumps(data): [{"id": "4ea856fd6506ae0db42702dd", "title": "Business"}]
flask.jsonify(data): {"id":…, "title":…}

분명히 json.dumps가 반환하는 것과 비슷한 결과를 얻을 필요가 있습니다. 내가 도대체 ​​뭘 잘못하고있는 겁니까?

해결법

  1. ==============================

    1.플라스크의 jsonify () 함수는 json 응답에 사용할 적절한 content-type 헤더 'application / json'을 이미 가진 flask.Response () 객체를 반환합니다. 반면에 json.dumps () 메서드는 인코딩 된 문자열을 반환하기 때문에 MIME 형식 헤더를 수동으로 추가해야합니다.

    플라스크의 jsonify () 함수는 json 응답에 사용할 적절한 content-type 헤더 'application / json'을 이미 가진 flask.Response () 객체를 반환합니다. 반면에 json.dumps () 메서드는 인코딩 된 문자열을 반환하기 때문에 MIME 형식 헤더를 수동으로 추가해야합니다.

    전체 참조를 위해 jsonify () 함수에 대한 자세한 내용은 여기를 참조하십시오.

    편집하다: 또한 jsonify ()가 kwargs 또는 사전을 처리하는 반면 json.dumps ()는 목록 및 기타 항목을 추가적으로 지원한다는 것을 알았습니다.

  2. ==============================

    2.넌 할 수있어:

    넌 할 수있어:

    flask.jsonify(**data)
    

    또는

    flask.jsonify(id=str(album.id), title=album.title)
    
  3. ==============================

    3.이것은 flask.jsonify ()입니다.

    이것은 flask.jsonify ()입니다.

    def jsonify(*args, **kwargs):
        if __debug__:
            _assert_have_json()
        return current_app.response_class(json.dumps(dict(*args, **kwargs),
            indent=None if request.is_xhr else 2), mimetype='application/json')
    

    json 모듈은 simplejson 또는 json 순으로 사용됩니다. current_app는 Flask () 객체, 즉 응용 프로그램에 대한 참조입니다. response_class ()는 Response () 클래스에 대한 참조입니다.

  4. ==============================

    4.하나 또는 다른 선택은 당신이하고자하는 일에 달려 있습니다. 내가 이해하는 것으로부터 :

    하나 또는 다른 선택은 당신이하고자하는 일에 달려 있습니다. 내가 이해하는 것으로부터 :

  5. from https://stackoverflow.com/questions/7907596/json-dumps-vs-flask-jsonify by cc-by-sa and MIT license