Ответ 1
Очень просто:
import json
j = json.loads('{"one" : "1", "two" : "2", "three" : "3"}')
print j['two']
Мой проект в настоящее время получает сообщение JSON на python, из которого мне нужно получить информацию. Для этого давайте зададим ему простой JSON в строке:
jsonStr = '{"one" : "1", "two" : "2", "three" : "3"}'
До сих пор я генерировал JSON-запросы, используя список, а затем json.dumps
, но чтобы сделать обратное, я думаю, что мне нужно использовать json.loads
. Однако мне не повезло с этим. Может ли кто-нибудь предоставить мне фрагмент, который будет возвращать "2"
с вводом "two"
в приведенном выше примере?
Очень просто:
import json
j = json.loads('{"one" : "1", "two" : "2", "three" : "3"}')
print j['two']
Иногда ваш json не является строкой. Например, если вы получаете json из URL-адреса, например:
j = urllib2.urlopen('http://site.com/data.json')
вам нужно будет использовать json.load, а не json.loads:
j_obj = json.load(j)
(легко забыть: 's' для 'string')
Для URL или файла используйте json.load()
. Для строки с содержимым json.loads()
используйте 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"}
Обратите внимание, что вы можете установить аргумент идентификатора дампа для его печати таким образом (например, при использовании 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