Разбор JSON в Python - PullRequest
       33

Разбор JSON в Python

236 голосов
/ 14 октября 2011

Мой проект в настоящее время получает сообщение JSON на python, из которого мне нужно получить информацию.Для этого давайте зададим ему простой JSON в строке:

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

До сих пор я генерировал JSON-запросы, используя список, а затем json.dumps, но для противоположногоЯ думаю, что мне нужно использовать json.loads, но мне не повезло с этим.Может ли кто-нибудь предоставить мне фрагмент, который будет возвращать «2» с вводом «два» в приведенном выше примере?

Ответы [ 4 ]

426 голосов
/ 14 октября 2011

Очень просто:

import json
j = json.loads('{"one" : "1", "two" : "2", "three" : "3"}')
print j['two']
75 голосов
/ 14 октября 2011

Иногда ваш JSON не является строкой.Например, если вы получаете json из URL-адреса, например:

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

, вам нужно использовать json.load, а не json.loads:

j_obj = json.load(j)

(это легкозабыть: 's' для 'строки')

39 голосов
/ 05 июля 2013

Для URL или файла используйте json.load ().Для строки с содержимым .json используйте json.loads ().

#! /usr/bin/python

import json
from pprint import pprint

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

json_data=open(json_file)
data = json.load(json_data)
#pprint(data)
json_data.close()

print "Dimension: ", data['cubes'][cube]['dim']
print "Measures:  ", data['cubes'][cube]['meas']
24 голосов
/ 30 сентября 2015

Ниже приведен простой пример, который может вам помочь:

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"}

Обратите внимание, что вы можете установить для идентификатора аргумента dump его печать следующим образом (например, при использовании print json.dumps (data, indent = 4)):

{
    "pk": 1, 
    "fb": {
        "new_key": "cc.ee was present!", 
        "fd_id": "12345", 
        "fc": ""
    }, 
    "fa": "cc.ee"
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...