[python] 파이썬에서 JSON을 파싱하는 방법?

내 프로젝트는 현재 파이썬으로 JSON 메시지를 받고 있으며 약간의 정보를 얻어야합니다. 이를 위해 문자열에서 간단한 JSON으로 설정하십시오.

jsonStr = '{"one" : "1", "two" : "2", "three" : "3"}'

지금까지 목록을 사용하여 JSON 요청을 생성 한 다음 json.dumps반대의 작업을 수행하려면을 사용해야한다고 생각합니다 json.loads. 그러나 나는 그다지 운이 없었습니다. 누구든지 위의 예제에서 "2"입력 한 내용을 반환하는 스 니펫을 제공 할 수 "two"있습니까?



답변

매우 간단합니다 :

import json
data = json.loads('{"one" : "1", "two" : "2", "three" : "3"}')
print data['two']


답변

때로는 json이 문자열이 아닙니다. 예를 들어 다음과 같이 URL에서 json을 얻는 경우 :

j = urllib2.urlopen('http://site.com/data.json')

json.loads가 아닌 json.load를 사용해야합니다.

j_obj = json.load(j)

(잊기 쉽다 : ‘s’는 ‘string’입니다)


답변

URL 또는 파일의 경우을 사용하십시오 json.load(). .json 컨텐츠가 포함 된 문자열의 경우을 사용하십시오 json.loads().

#! /usr/bin/python

import json
# from pprint import pprint

json_file = 'my_cube.json'
cube = '1'

with open(json_file) as json_data:
    data = json.load(json_data)

# pprint(data)

print "Dimension: ", data['cubes'][cube]['dim']
print "Measures:  ", data['cubes'][cube]['meas']


답변

다음은 도움이 될 수있는 간단한 예입니다.

json_string = """
{
    "pk": 1, 
    "fa": "cc.ee", 
    "fb": {
        "fc": "", 
        "fd_id": "12345"
    }
}"""

import json
data = json.loads(json_string)
if data["fa"] == "cc.ee":
    data["fb"]["new_key"] = "cc.ee was present!"

print json.dumps(data)

위 코드의 출력은 다음과 같습니다.

{"pk": 1, "fb": {"new_key": "cc.ee was present!", "fd_id": "12345", 
 "fc": ""}, "fa": "cc.ee"}

덤프의 ident 인수를 설정하여 인쇄 할 수 있습니다 (예 : print json.dumps (data, indent = 4) 사용시).

{
    "pk": 1, 
    "fb": {
        "new_key": "cc.ee was present!", 
        "fd_id": "12345", 
        "fc": ""
    }, 
    "fa": "cc.ee"
}


답변

json 또는 ast python 모듈을 사용할 수 있습니다.

Using json :
=============

import json
jsonStr = '{"one" : "1", "two" : "2", "three" : "3"}'
json_data = json.loads(jsonStr)
print(f"json_data: {json_data}")
print(f"json_data['two']: {json_data['two']}")

Output:
json_data: {'one': '1', 'two': '2', 'three': '3'}
json_data['two']: 2




Using ast:
==========

import ast
jsonStr = '{"one" : "1", "two" : "2", "three" : "3"}'
json_dict = ast.literal_eval(jsonStr)
print(f"json_dict: {json_dict}")
print(f"json_dict['two']: {json_dict['two']}")

Output:
json_dict: {'one': '1', 'two': '2', 'three': '3'}
json_dict['two']: 2


답변