JSONDecodeError al cargar el archivo json [duplicado]

Nov 01 2020

Dado un archivo json test.jsoncon el contenido de la siguiente manera:

{'review/appearance': 2.5, 'beer/style': 'Hefeweizen', 'review/palate': 1.5, 'review/taste': 1.5, 'beer/name': 'Sausa Weizen', 'review/timeUnix': 1234817823, 'beer/ABV': 5.0, 'beer/beerId': '47986', 'beer/brewerId': '10325', 'review/timeStruct': {'isdst': 0, 'mday': 16, 'hour': 20, 'min': 57, 'sec': 3, 'mon': 2, 'year': 2009, 'yday': 47, 'wday': 0}, 'review/overall': 1.5, 'review/text': 'A lot of foam. But a lot.\tIn the smell some banana, and then lactic and tart. Not a good start.\tQuite dark orange in color, with a lively carbonation (now visible, under the foam).\tAgain tending to lactic sourness.\tSame for the taste. With some yeast and banana.', 'user/profileName': 'stcules', 'review/aroma': 2.0}
{'review/appearance': 3.0, 'beer/style': 'English Strong Ale', 'review/palate': 3.0, 'review/taste': 3.0, 'beer/name': 'Red Moon', 'review/timeUnix': 1235915097, 'beer/ABV': 6.2, 'beer/beerId': '48213', 'beer/brewerId': '10325', 'review/timeStruct': {'isdst': 0, 'mday': 1, 'hour': 13, 'min': 44, 'sec': 57, 'mon': 3, 'year': 2009, 'yday': 60, 'wday': 6}, 'review/overall': 3.0, 'review/text': 'Dark red color, light beige foam, average.\tIn the smell malt and caramel, not really light.\tAgain malt and caramel in the taste, not bad in the end.\tMaybe a note of honey in teh back, and a light fruitiness.\tAverage body.\tIn the aftertaste a light bitterness, with the malt and red fruit.\tNothing exceptional, but not bad, drinkable beer.', 'user/profileName': 'stcules', 'review/aroma': 2.5}
{'review/appearance': 3.0, 'beer/style': 'Foreign / Export Stout', 'review/palate': 3.0, 'review/taste': 3.0, 'beer/name': 'Black Horse Black Beer', 'review/timeUnix': 1235916604, 'beer/ABV': 6.5, 'beer/beerId': '48215', 'beer/brewerId': '10325', 'review/timeStruct': {'isdst': 0, 'mday': 1, 'hour': 14, 'min': 10, 'sec': 4, 'mon': 3, 'year': 2009, 'yday': 60, 'wday': 6}, 'review/overall': 3.0, 'review/text': 'Almost totally black. Beige foam, quite compact, not bad.\tLight smell, just a bit of roast, and some hop. A bit too light.\tThe taste is light oo, and drinkable, with some malt, roast, hints of coffee.\tNothing exceptional, but after all drinkable and pleasant.\tLight to average body.\tIn the aftertaste some dust, somr roast, hint of caramel, and a bit of bitterness.\tNo defect, drinkable, not bad.', 'user/profileName': 'stcules', 'review/aroma': 2.5}

He cargado el archivo con el siguiente código:

import json
with open('./test.json', 'r') as json_file:
    data = json.load(json_file)

Pero genera un error: JSONDecodeError: Expecting property name enclosed in double quotes: line 1 column 2 (char 1).

Otra opción:

data = json.loads('./test.json')
print(data)

Salida:

JSONDecodeError: Expecting value: line 1 column 1 (char 0)

¿Cómo podría hacerlo correctamente? Muchas gracias de antemano.

Respuestas

2 HarshaBiyani Nov 02 2020 at 06:07

Hay 2 problemas en JSON.

  1. Faltan soportes de matriz []
  2. Modificar 'a"

JSON correcto:

[{
    "review/appearance": 2.5,
    "beer/style": "Hefeweizen",
    "review/palate": 1.5,
    "review/taste": 1.5,
    "beer/name": "Sausa Weizen",
    "review/timeUnix": 1234817823,
    "beer/ABV": 5.0,
    "beer/beerId": "47986",
    "beer/brewerId": "10325",
    "review/timeStruct": {
        "isdst": 0,
        "mday": 16,
        "hour": 20,
        "min": 57,
        "sec": 3,
        "mon": 2,
        "year": 2009,
        "yday": 47,
        "wday": 0
    },
    "review/overall": 1.5,
    "review/text": "A lot of foam. But a lot.\tIn the smell some banana, and then lactic and tart. Not a good start.\tQuite dark orange in color, with a lively carbonation (now visible, under the foam).\tAgain tending to lactic sourness.\tSame for the taste. With some yeast and banana.",
    "user/profileName": "stcules",
    "review/aroma": 2.0
}, {
    "review/appearance": 3.0,
    "beer/style": "English Strong Ale",
    "review/palate": 3.0,
    "review/taste": 3.0,
    "beer/name": "Red Moon",
    "review/timeUnix": 1235915097,
    "beer/ABV": 6.2,
    "beer/beerId": "48213",
    "beer/brewerId": "10325",
    "review/timeStruct": {
        "isdst": 0,
        "mday": 1,
        "hour": 13,
        "min": 44,
        "sec": 57,
        "mon": 3,
        "year": 2009,
        "yday": 60,
        "wday": 6
    },
    "review/overall": 3.0,
    "review/text": "Dark red color, light beige foam, average.\tIn the smell malt and caramel, not really light.\tAgain malt and caramel in the taste, not bad in the end.\tMaybe a note of honey in teh back, and a light fruitiness.\tAverage body.\tIn the aftertaste a light bitterness, with the malt and red fruit.\tNothing exceptional, but not bad, drinkable beer.",
    "user/profileName": "stcules",
    "review/aroma": 2.5
}, {
    "review/appearance": 3.0,
    "beer/style": "Foreign / Export Stout",
    "review/palate": 3.0,
    "review/taste": 3.0,
    "beer/name": "Black Horse Black Beer",
    "review/timeUnix": 1235916604,
    "beer/ABV": 6.5,
    "beer/beerId": "48215",
    "beer/brewerId": "10325",
    "review/timeStruct": {
        "isdst": 0,
        "mday": 1,
        "hour": 14,
        "min": 10,
        "sec": 4,
        "mon": 3,
        "year": 2009,
        "yday": 60,
        "wday": 6
    },
    "review/overall": 3.0,
    "review/text": "Almost totally black. Beige foam, quite compact, not bad.\tLight smell, just a bit of roast, and some hop. A bit too light.\tThe taste is light oo, and drinkable, with some malt, roast, hints of coffee.\tNothing exceptional, but after all drinkable and pleasant.\tLight to average body.\tIn the aftertaste some dust, somr roast, hint of caramel, and a bit of bitterness.\tNo defect, drinkable, not bad.",
    "user/profileName": "stcules",
    "review/aroma": 2.5
}] 
1 buran Nov 02 2020 at 05:59

este no es un archivo json. Parece que ndjson mira el paquete de terceros ndjson

Además, debe usar comillas dobles, no comillas simples.

Si este es un archivo que crea o puede cambiar, puede poner estos 3 objetos JSON en una matriz JSON y luego será JSON válido.

1 JackTaylor Nov 02 2020 at 06:07

El problema es que su archivo no es JSON válido. Necesita comillas dobles en lugar de comillas simples alrededor de sus cadenas, y debe encerrar sus tres objetos dentro de una matriz.

Prueba esto en su lugar:

[
    {"review/appearance": 2.5, "beer/style": "Hefeweizen", "review/palate": 1.5, "review/taste": 1.5, "beer/name": "Sausa Weizen", "review/timeUnix": 1234817823, "beer/ABV": 5.0, "beer/beerId": "47986", "beer/brewerId": "10325", "review/timeStruct": {"isdst": 0, "mday": 16, "hour": 20, "min": 57, "sec": 3, "mon": 2, "year": 2009, "yday": 47, "wday": 0}, "review/overall": 1.5, "review/text": "A lot of foam. But a lot.\tIn the smell some banana, and then lactic and tart. Not a good start.\tQuite dark orange in color, with a lively carbonation (now visible, under the foam).\tAgain tending to lactic sourness.\tSame for the taste. With some yeast and banana.", "user/profileName": "stcules", "review/aroma": 2.0},
    {"review/appearance": 3.0, "beer/style": "English Strong Ale", "review/palate": 3.0, "review/taste": 3.0, "beer/name": "Red Moon", "review/timeUnix": 1235915097, "beer/ABV": 6.2, "beer/beerId": "48213", "beer/brewerId": "10325", "review/timeStruct": {"isdst": 0, "mday": 1, "hour": 13, "min": 44, "sec": 57, "mon": 3, "year": 2009, "yday": 60, "wday": 6}, "review/overall": 3.0, "review/text": "Dark red color, light beige foam, average.\tIn the smell malt and caramel, not really light.\tAgain malt and caramel in the taste, not bad in the end.\tMaybe a note of honey in teh back, and a light fruitiness.\tAverage body.\tIn the aftertaste a light bitterness, with the malt and red fruit.\tNothing exceptional, but not bad, drinkable beer.", "user/profileName": "stcules", "review/aroma": 2.5},
    {"review/appearance": 3.0, "beer/style": "Foreign / Export Stout", "review/palate": 3.0, "review/taste": 3.0, "beer/name": "Black Horse Black Beer", "review/timeUnix": 1235916604, "beer/ABV": 6.5, "beer/beerId": "48215", "beer/brewerId": "10325", "review/timeStruct": {"isdst": 0, "mday": 1, "hour": 14, "min": 10, "sec": 4, "mon": 3, "year": 2009, "yday": 60, "wday": 6}, "review/overall": 3.0, "review/text": "Almost totally black. Beige foam, quite compact, not bad.\tLight smell, just a bit of roast, and some hop. A bit too light.\tThe taste is light oo, and drinkable, with some malt, roast, hints of coffee.\tNothing exceptional, but after all drinkable and pleasant.\tLight to average body.\tIn the aftertaste some dust, somr roast, hint of caramel, and a bit of bitterness.\tNo defect, drinkable, not bad.", "user/profileName": "stcules", "review/aroma": 2.5}
]

Por cierto, obj = json.loads('./test.json')no funcionará, como json.loadsespera una cadena JSON, no una ruta de archivo o un objeto de archivo. ( loadses la abreviatura de "cadena de carga") json.load.

TheSavageTeddy Nov 02 2020 at 06:00

El archivo no es json. Esto se ha preguntado antes aquí.

JSON no usa comillas simples ', en su lugar usan comillas dobles"