Работа с JSON в Python 2.6? - PullRequest
       4

Работа с JSON в Python 2.6?

2 голосов
/ 13 ноября 2009

Я действительно новичок в Python, но я выбрал проблему, которая на самом деле относится к работе, и я думаю, что когда я пойму, как это сделать, я научусь по пути.

У меня есть каталог, полный файлов в формате JSON. Я дошел до того, что импортировал все из каталога в список и перебрал список, чтобы сделать простую распечатку, подтверждающую, что я получил данные.

Я пытаюсь выяснить, как на самом деле работать с данным объектом JSON в Python. В JavaScript это так просто, как

var x = {'asd':'bob'}
alert( x.asd ) //alerts 'bob'

Доступ к различным свойствам объекта осуществляется через простые точечные обозначения. Что эквивалентно для Python?

Так что это мой код, который выполняет импорт. Я хотел бы знать, как работать с отдельными объектами, хранящимися в списке.

#! /usr/local/bin/python2.6

import os, json

#define path to reports
reportspath = "reports/"

# Gets all json files and imports them

dir = os.listdir(reportspath)

jsonfiles = []

for fname in dir:
    with open(reportspath + fname,'r') as f:
        jsonfiles.append( json.load(f) )

for i in jsonfiles:
    print i #prints the contents of each file stored in jsonfiles

Ответы [ 2 ]

11 голосов
/ 13 ноября 2009

То, что вы получаете, когда вы json.load файл, содержащий JSON-форму объекта Javascript, такого как {'abc': 'def'}, представляет собой Python словарь (обычно и нежно называемый dict) (который в этом case имеет такое же текстовое представление, что и объект Javascript).

Чтобы получить доступ к определенному элементу, вы используете индексирование, mydict['abc'], в то время как в Javascript вы используете нотацию доступа к атрибуту, myobj.abc. То, что вы получаете с нотацией доступа к атрибуту в Python, - это методы, которые вы можете вызывать в вашем dict, например, mydict.keys() даст ['abc'], список со всеми значениями ключа, которые присутствуют в словаре (в данном случае только один, и это строка).

Словари чрезвычайно богаты по функциональности, с множеством методов, которые сделают вашу голову крутящейся, плюс сильная поддержка многих структур языка Python (например, вы можете зацикливаться на dict, for k in mydict:, и k будет шагать через ключи словаря, итеративно и последовательно).

0 голосов
/ 13 ноября 2009

Чтобы получить доступ ко всем свойствам, попробуйте оператор eval (), прежде чем добавлять список.

как:

import os

#define path to reports
reportspath = "reports/"

# Gets all json files and imports them

dir = os.listdir(reportspath)


for fname in dir:
    json = eval(open(fname).read())
    # now, json is a normal python object
    print json
    # list all properties...
    print dir(json)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...