在Python 2.6中使用JSON?

时间:2009-11-12 21:55:31

标签: python json

我对Python很陌生,但我选择了一个实际上与工作有关的问题,我想当我弄清楚如何做到这一点我会一路上学习。

我有一个充满JSON格式文件的目录。我已经将目录中的所有内容导入到列表中,并在列表中进行迭代以执行简单的打印,以验证我获取了数据。

我正在试图弄清楚如何在Python中实际使用给定的JSON对象。在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 个答案:

答案 0 :(得分:11)

json.load{'abc': 'def'}包含JSON形式的Javascript对象(例如dict)的文件是Python dictionary时(通常情况下被亲切地称为mydict['abc']) (在这种情况下恰好与Javascript对象具有相同的文本表示)。

要访问特定项目,请使用索引myobj.abc,而在Javascript中,您使用属性访问表示法mydict.keys()。你在Python中使用属性访问表示法获得的是你可以在你的dict上调用的方法,例如['abc']会给for k in mydict:一个列表,其中包含字典中存在的所有键值(在这种情况下,只有一个,而且是一个字符串)。

字典功能非常丰富,有很多方法可以让你头脑旋转,并且对许多Python语言结构提供强大的支持(例如,你可以循环使用dict,k和{{1将迭代地按顺序逐步执行字典的键。

答案 1 :(得分:-1)

要访问所有属性,请在附加列表之前尝试使用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)