나는 그 목적을 이해하지 못한다 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>"