source

Python을 사용하는 JSON에 대한 개체 목록

itover 2023. 3. 23. 22:41
반응형

Python을 사용하는 JSON에 대한 개체 목록

변환에 문제가 있습니다.Object인스턴스를 JSON으로:

ob = Object()

list_name = scaping_myObj(base_url, u, number_page)

for ob in list_name:
   json_string = json.dumps(ob.__dict__)
   print json_string

list_name리스트가 있습니다.Object인스턴스.

json_string예를 들어 다음과 같습니다.

{"city": "rouen", "name": "1, 2, 3 Soleil"}
{"city": "rouen", "name": "Maman, les p'tits bateaux"}

단, JSON 문자열 1개만 목록에 모든 정보가 포함되어 있으면 좋겠습니다.

[{"city": "rouen", "name": "1, 2, 3 Soleil"}, {"city": "rouen", "name": "Maman, les p'tits bateaux"}]

목록 이해를 사용하여 사전 목록을 생성한 다음 다음을 변환할 수 있습니다.

json_string = json.dumps([ob.__dict__ for ob in list_name])

또는 를 사용합니다.default기능하다json.dumps()는 시리얼화할 수 없는 것에 대해 콜합니다.

def obj_dict(obj):
    return obj.__dict__

json_string = json.dumps(list_name, default=obj_dict)

후자는 목록뿐만 아니라 구조의 모든 수준에서 삽입된 개체에 대해 작동합니다.

개인적으로 마시멜로 같은 프로젝트를 사용하여 더 복잡한 작업을 처리하고 싶습니다. 예를 들어 샘플 데이터를 처리하는 방법은 다음과 같습니다.

from marshmallow import Schema, fields

class ObjectSchema(Schema):
    city = fields.Str()
    name = fields.Str()

object_schema = ObjectSchema()
json_string = object_schema.dumps(list_name, many=True)

@MartijnPieters의 답변과 마찬가지로 json.dumps를 사용할 수 있습니다.default별도의 함수를 만들지 않으려는 경우 다음과 같이 입력합니다. json.dumps(obj, default = lambda x: x.__dict__)

이 문제에 대한 또 다른 가능한 해결책으로 jsonpickle을 들 수 있습니다.jsonpickle은 Python 객체를 JSON으로 변환하는 데 사용할 수 있습니다(단순 목록뿐만 아니라).

jsonpickle 홈페이지에서:

jsonpickle은 JSON과 주고받는 복잡한 Python 객체를 직렬화 및 직렬화 해제하기 위한 Python 라이브러리입니다.stdlib의 json, simplejson 및 demjson과 같이 Python을 JSON으로 인코딩하기 위한 표준 Python 라이브러리는 직접적인 JSON 상당(dicts, lists, string, int 등)을 가진 Python 프리미티브만 처리할 수 있습니다.json pickle은 이러한 라이브러리 위에 구축되어 더 복잡한 데이터 구조를 JSON으로 직렬화할 수 있습니다.jsonpickle은 설정 및 확장성이 뛰어나 사용자가 JSON 백엔드를 선택하고 백엔드를 추가할 수 있습니다.

변환의 실행은 간단합니다.

import jsonpickle

class JsonTransformer(object):
    def transform(self, myObject):
        return jsonpickle.encode(myObject, unpicklable=False)

언급URL : https://stackoverflow.com/questions/26033239/list-of-objects-to-json-with-python

반응형