python função - Analisando valores de um arquivo JSON?





string leitura (9)


   # 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

Eu tenho este JSON em um arquivo:

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

Eu escrevi este script que imprime todo o texto json:

json_data=open(file_directory).read()

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

Como posso analisar o arquivo e extrair valores únicos?




A resposta de Justin Peel é realmente útil, mas se você estiver usando o Python 3, a leitura de JSON deve ser feita assim:

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

Nota: use json.loads vez de json.load . No Python 3, o json.loads usa um parâmetro de string. json.load usa um parâmetro de objeto semelhante a um arquivo. data_file.read() retorna um objeto de string.




Se você está em python 3 aqui é como você pode fazê-lo

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

O código deve ser semelhante ao assumir que o arquivo connection.json é semelhante ao acima

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



Existem dois tipos nesta análise.

  1. Analisando dados de um arquivo de um caminho do sistema
  2. Analisando o JSON a partir do URL remoto.

De um arquivo, você pode usar o seguinte

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

Este artigo explica a análise completa e obtendo valores usando dois cenários. Analisando JSON usando Python




Como um usuário python3 ,

A diferença entre load métodos load e load é importante, especialmente quando você lê os dados json do arquivo.

Conforme indicado nos documentos:

json.load:

Deserialize fp (a .read () - arquivo de texto de suporte ou arquivo binário contendo um documento JSON) para um objeto Python usando essa tabela de conversão.

json.loads:

json.loads: Deserialize s (uma instância str, bytes ou bytearray contendo um documento JSON) para um objeto Python usando essa tabela de conversão.

O método json.load pode ler diretamente o documento json aberto, pois é capaz de ler o arquivo binário.

with open('./recipes.json') as data:
  all_recipes = json.load(data)

Como resultado, seus dados do json estão disponíveis em um formato especificado de acordo com essa tabela de conversão:

https://docs.python.org/3.7/library/json.html#json-to-py-table




Acho que o que Ignacio está dizendo é que seu arquivo JSON está incorreto. Você tem [] quando deveria ter {} . [] são para listas, {} são para dicionários.

Veja como o seu arquivo JSON deve estar, seu arquivo JSON não carregaria para mim:

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

Então você pode usar seu código:

import json
from pprint import pprint

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

pprint(data)

Com dados, agora você também pode encontrar valores como:

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

Experimente e veja se começa a fazer sentido.




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



"Ultra JSON" ou simplesmente "ujson" pode manipular ter [] na entrada do seu arquivo JSON. Se você estiver lendo um arquivo de entrada JSON em seu programa como uma lista de elementos JSON; tais como, [{[{}]}, {}, [], etc...] ujson pode lidar com qualquer ordem arbitrária de listas de dicionários, dicionários de listas.

Você pode encontrar o ujson no índice de pacotes do Python e a API é quase idêntica à biblioteca json do Python.

O ujson também é muito mais rápido se você estiver carregando arquivos JSON maiores. Você pode ver os detalhes de desempenho em comparação com outras bibliotecas JSON do Python no mesmo link fornecido.




Se você gostar

var response = '{"result":true,"count":1}';
var JsonObject= JSON.parse(response);

você pode acessar os elementos JSON por JsonObject com (.) dot:

JsonObject.result;
JsonObject.count;






python json parsing