JSONDecodeError saat memuat file json [duplikat]
Diberikan file json test.jsondengan isi sebagai berikut:
{'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}
Saya telah memuat file dengan kode berikut:
import json
with open('./test.json', 'r') as json_file:
data = json.load(json_file)
Tapi itu menimbulkan kesalahan: JSONDecodeError: Expecting property name enclosed in double quotes: line 1 column 2 (char 1).
Pilihan lain:
data = json.loads('./test.json')
print(data)
Keluaran:
JSONDecodeError: Expecting value: line 1 column 1 (char 0)
Bagaimana saya bisa melakukannya dengan benar? Terima kasih banyak sebelumnya.
Jawaban
Ada 2 masalah di JSON.
- Tanda kurung larik tidak ada
[] - Ubah
'menjadi"
JSON yang benar:
[{
"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
}]
ini bukan file json. Sepertinya ndjson melihat paket pihak ketiga ndjson
Juga, itu harus menggunakan tanda kutip ganda, bukan tanda kutip tunggal.
Jika ini adalah file yang Anda buat atau dapat diubah - Anda dapat meletakkan 3 objek JSON ini ke dalam larik JSON dan kemudian t akan menjadi JSON yang valid.
Masalahnya adalah file Anda bukan JSON yang valid. Anda membutuhkan tanda kutip ganda, bukan tanda kutip tunggal di sekitar string Anda, dan Anda perlu menyertakan tiga objek Anda di dalam larik.
Coba ini sebagai gantinya:
[
{"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}
]
Omong-omong, obj = json.loads('./test.json')tidak akan berfungsi, seperti yang json.loadsdiharapkan string JSON, bukan jalur file atau objek file. ( loadskependekan dari "load string".) Anda menginginkannya json.load.
File tersebut bukan json. Ini telah ditanyakan sebelumnya di sini
JSON Tidak menggunakan tanda kutip tunggal ', melainkan menggunakan tanda kutip ganda"