打开json - 解析json文件python




从JSON文件解析值? (5)

我有一个文件中的这个JSON:

{
    "maps": [
        {
            "id": "blabla",
            "iscategorical": "0"
        },
        {
            "id": "blabla",
            "iscategorical": "0"
        }
    ],
    "masks": [
        "id": "valore"
    ],
    "om_points": "value",
    "parameters": [
        "id": "valore"
    ]
}

我写了这个脚本来打印所有的json文本:

json_data=open(file_directory).read()

data = json.loads(json_data)
pprint(data)

我如何解析文件并提取单个值?


“超JSON”或简单地“ujson”可以处理您的JSON文件输入中的[] 。 如果您正在将JSON输入文件作为JSON元素列表读入程序, 如[{[{}]}, {}, [], etc...] ujson可以处理任何字典列表字典列表的任意顺序。

您可以在Python包索引中找到ujson,并且该API几乎与Python的内置json库相同。

如果您要加载更大的JSON文件,则ujson速度也会更快。 与提供的同一链接中的其他Python JSON库相比,您可以看到性能细节。


@Justin Peel的回答是非常有用的,但是如果你使用Python 3阅读JSON,应该这样做:

with open('data.json', encoding='utf-8') as data_file:
    data = json.loads(data_file.read())

注意:使用json.loads而不是json.load 。 在Python 3中, json.loads接受一个字符串参数。 json.load采用类似文件的对象参数。 data_file.read()返回一个字符串对象。


如果你在Python 3中,这里是你如何做到这一点

{
  "connection1": {
    "DSN": "con1",
    "UID": "abc",
    "PWD": "1234",
    "connection_string_python":"test1"
  }
  ,
  "connection2": {
    "DSN": "con2",
    "UID": "def",
    "PWD": "1234"
  }
}

代码应该看起来像假设connection.json文件如上所示

connection_file = open('connection.json', 'r')
conn_string = json.load(connection_file)
conn_string['connection1']['connection_string_python'])
connection_file.close()
>>>test1

我想伊格纳西奥说的是你的JSON文件不正确。 当你有{}时,你有[][]用于列表, {}用于字典。

以下是您的JSON文件的外观,您的JSON文件甚至不会为我加载:

{
    "maps": [
        {
            "id": "blabla",
            "iscategorical": "0"
        },
        {
            "id": "blabla",
            "iscategorical": "0"
        }
    ],
    "masks": {
        "id": "valore"
    },
    "om_points": "value",
    "parameters": {
        "id": "valore"
    }
}

然后你可以使用你的代码:

import json
from pprint import pprint

data = json.load(open('data.json'))

pprint(data)

有了数据,你现在也可以找到像这样的值:

data["maps"][0]["id"]
data["masks"]["id"]
data["om_points"]

尝试一下,看看它是否开始有意义。


data = []
with codecs.open('d:\output.txt','rU','utf-8') as f:
    for line in f:
       data.append(json.loads(line))






parsing