файла - python поиск в json



Разбор значений из файла JSON? (6)

«Ultra JSON» или просто «ujson» может работать с [] в вашем входе в файл JSON. Если вы читаете входной файл JSON в своей программе в виде списка элементов JSON; например, [{[{}]}, {}, [], etc...] ujson может обрабатывать любой произвольный порядок списков словарей, словарей списков.

Вы можете найти ujson в индексе пакета Python, и API почти идентичен встроенной json библиотеке Python.

ujson также намного быстрее, если вы загружаете файлы большего размера JSON. Вы можете увидеть детали производительности по сравнению с другими библиотеками JSON Python в той же самой ссылке.

У меня этот 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)

Как я могу разобрать файл и извлечь отдельные значения?


Answer #1

В этом разборе есть два типа.

  1. Анализ данных из файла с системного пути
  2. Разбор JSON с удаленного URL.

Из файла вы можете использовать следующие

import json
json = json.loads(open('/path/to/file.json').read())
value = json['key']
print json['value']

Эта статья объясняет полный анализ и получение значений с использованием двух сценариев. Разбор JSON с использованием Python


Answer #2

Я думаю, что Игнасио говорит, что ваш 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

with open('data.json') as f:
    data = json.load(f)

pprint(data)

С помощью данных вы также можете найти такие значения:

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

Попробуйте это и посмотрите, начинает ли это иметь смысл.


Answer #3

если вы находитесь на 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

Answer #4
   # Here you go with modified json file:
   # data.json file : 
    {
        "maps": [
            {
                "id": "blabla",
                "iscategorical": "0"
            },
            {
                "id": "blabla",
                "iscategorical": "0"
            }
        ],
        "masks": [{
            "id": "valore"
        }],
        "om_points": "value",
        "parameters": [{
            "id": "valore"
        }]
    }


   # You can call or print data on console by using below lines

    import json
    from pprint import pprint
    with open('data.json') as data_file:
        data_item = json.load(data_file)
    pprint(data_item)

    print(data_item['parameters'][0]['id'])

    #Output : 
    #pprint(data_item) output as :

    {'maps': [{'id': 'blabla', 'iscategorical': '0'},
              {'id': 'blabla', 'iscategorical': '0'}],
     'masks': [{'id': 'valore'}],
     'om_points': 'value',
     'parameters': [{'id': 'valore'}]}
    #print(data_item['parameters'][0]['id']) output as :
    valore

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




parsing