[python] json.dumps vs flask.jsonify

나는 그 목적을 이해하지 못한다 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반환 하는 것과 더 비슷한 결과를 얻어야 합니다. 내가 뭘 잘못하고 있죠?



답변

jsonify()플라스크 의 함수는 flask.Response()json 응답과 함께 사용하기에 적절한 컨텐츠 유형 헤더 ‘application / json’이 이미 있는 객체를 반환합니다 . 반면,이 json.dumps()메소드는 인코딩 된 문자열을 반환하므로 MIME 유형 헤더를 수동으로 추가해야합니다.

[정보 더보기 jsonify()기능 여기에 전체 참조하십시오.

편집 : 또한 jsonify()kwarg 또는 사전 을 처리하는 동시에 json.dumps()목록 및 기타를 지원 한다는 것을 알았 습니다.


답변

넌 할 수있어:

flask.jsonify(**data)

또는

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


답변

이것은 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()입니다.


답변

하나 또는 다른 것을 선택하는 것은 당신이하려는 일에 달려 있습니다. 내가 이해하는 것에서 :

  • jsonify 는 누군가가 json을 쿼리하고 반환 할 API를 빌드 할 때 유용합니다. 예 : REST github API는이 메소드를 사용하여 요청에 응답 할 수 있습니다.

  • dumps 는 data / python 객체를 json으로 포맷하고 응용 프로그램 내에서 작업하는 것에 관한 것입니다. 예를 들어, 일부 자바 스크립트가 그래프를 표시하는 표현 레이어에 객체를 전달해야합니다. 덤프로 생성 된 Json으로 자바 스크립트를 제공합니다.


답변

치다

data={'fld':'hello'}

지금

jsonify(data)

{ ‘fld’: ‘hello’}를 생성하고

json.dumps(data)

준다

"<html><body><p>{'fld':'hello'}</p></body></html>"


답변