[python] 파이썬으로 JSON 객체를 동적으로 빌드하는 방법은 무엇입니까?

저는 Python을 처음 사용하고 JSON 데이터를 가지고 놀고 있습니다. 기존 JSON 객체에 키-값을 추가하여 JSON 객체를 동적으로 작성하고 싶습니다.

나는 다음을 시도했지만 얻는다 TypeError: 'str' object does not support item assignment:

import json

json_data = json.dumps({})
json_data["key"] = "value"

print 'JSON: ', json_data



답변

JSON 문자열로 인코딩 하기 전에 객체 빌드 합니다.

import json

data = {}
data['key'] = 'value'
json_data = json.dumps(data)

JSON은 구조를 나타내는 텍스트 형식 의 직렬화 형식 입니다. 그 자체는 그 구조가 아닙니다.


답변

파이썬 사전을 만들어 한 줄에 JSON으로 직렬화 할 수 있으며 추악하지도 않습니다.

my_json_string = json.dumps({'key1': val1, 'key2': val2})


답변

사전 (또는 더 복잡한 데이터의 경우 중첩 된 사전)을 구축 할 수있는 솔루션이 이미 제공되어 있지만 객체를 만들려면 ‘ObjDict’를 사용해보십시오. 이를 통해 json을 생성 (예 : 순서 유지) 할 수 있도록 제어 할 수 있으며 개념을 선호하는 객체로 빌드 할 수 있습니다.

pip install objdict를 먼저 사용하십시오.

from objdict import ObjDict

data = ObjDict()
data.key = 'value'
json_data = data.dumps()


답변

EasyDict라이브러리 ( doc )를 사용할 수 있습니다 .

EasyDict를 사용하면 dict 값을 속성으로 액세스 할 수 있습니다 (재귀 적으로 작동). 파이썬 딕트에 대한 자바 스크립트와 유사한 속성 점 표기법.

사용

>>> from easydict import EasyDict as edict
>>> d = edict({'foo':3, 'bar':{'x':1, 'y':2}})
>>> d.foo
3
>>> d.bar.x
1

>>> d = edict(foo=3)
>>> d.foo
3

[ 설치 ] :

  • pip install easydict

답변

이전의 모든 대답은 정확합니다. 여기에 또 하나의 쉬운 방법이 있습니다. 예를 들어 Dict 데이터 구조를 만들어 개체를 직렬화하고 역 직렬화합니다.

( 공지 사항 없음 파이썬에서 널없고 나는 의도적으로 당신이 널 (null)을 저장할 수있는 방법을 보여줍니다 및 JSON 널 (null)로 변환이 사용하고 있습니다)

import json
print('serialization')
myDictObj = { "name":"John", "age":30, "car":None }
##convert object to json
serialized= json.dumps(myDictObj, sort_keys=True, indent=3)
print(serialized)
## now we are gonna convert json to object
deserialization=json.loads(serialized)
print(deserialization)

여기에 이미지 설명을 입력하십시오


답변