質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.31%
JSON

JSON(JavaScript Object Notation)は軽量なデータ記述言語の1つである。構文はJavaScriptをベースとしていますが、JavaScriptに限定されたものではなく、様々なソフトウェアやプログラミング言語間におけるデータの受け渡しが行えるように設計されています。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

3回答

1375閲覧

Python:JSONファイル読み取り時にエラーが発生する。

Mototaka

総合スコア3

JSON

JSON(JavaScript Object Notation)は軽量なデータ記述言語の1つである。構文はJavaScriptをベースとしていますが、JavaScriptに限定されたものではなく、様々なソフトウェアやプログラミング言語間におけるデータの受け渡しが行えるように設計されています。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2023/07/10 04:07

実現したいこと

・PythonスクリプトでJSONファイルの解析を行いたい。
JSONファイル読み取り時にエラーが発生します。
問題点についてご教授いただけますと幸いです。

前提

・PythonスクリプトでJSONファイルを読み込みする際にエラーが発生した。

発生している問題・エラーメッセージ

VSCODE上でのエラー

例外が発生しました: JSONDecodeError Extra data: line 39 column 1 (char 882) File "C:\llmlog\llm_log_merge1.1.py", line 122, in <module> data = json.load(f) json.decoder.JSONDecodeError: Extra data: line 39 column 1 (char 882)

ツール上での解析時エラー

Error: Parse error on line 35: ... } }}{ "logLevel": "I -----------------^ Expecting 'EOF', '}', ',', ']', got '{'

該当のソースコード

読み取り対象JSONファイル

{ "logLevel": "INFO", "timestamp": "", "sequence_id": "", "user-key": "", "group-id": "xxxxxxxxx", "type": "", "data": { "messages": [ { "role": "user", "content": "こんにちは" }, { "role": "assistant", "content": "、こんにちは!。" }, { "role": "user", "content": "thank you" } ], "temperature": 0, "llm_options": { "llamaindex": { "files": [ { "file_name": "xxxxxxx.pptx" } ] } } } } { "logLevel": "INFO", "timestamp": "", "sequence_id": "", "user-key": "", "group-id": "", "type": "", "data": { "statusCode": , "headers": { "Content-Type": "application/json" }, "body": { "id": "", "object": "xxxxxxxxxxxx", "created": xxxxxxxxxxxx, "model": "xxxxxxxxxxxx", "choices": [ { "index": 0, "finish_reason": "stop", "message": { "role": "assistant", "content": "xxxxxxxxxxxxxxxxx" } } ], "usage": { "completion_tokens": 000, "prompt_tokens": 0000, "total_tokens": 0000 }, "mod_user_content": "xxxxxxxxxxxxxxxx" } } }

・Pythonスクリプト(エラー発生部分を抜粋)

# 解析するJSONファイルの読み込み with open(inputFileName, 'r', encoding='utf-8') as f: data = json.load(f)

試したこと

・JSON構文チェッカーで構文確認
"{" & ”}”&","の位置を確認済み。
一番最初と一番最後の"{}"括弧を確認。

・利用したチェッカー
https://web-toolbox.dev/tools/json-formatter

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

TakaiY

2023/07/10 04:43

エラーで表示されている行の内容と同じものが、質問のjsonにありませんが、参照しているファイルとスクリプトで読み込んでいるファイルが異なるということはありませんか?
guest

回答3

0

ベストアンサー

一番最初と一番最後の"{}"括弧を確認。

オブジェクトが複数含まれている以上、提示された「読み取り対象JSONファイル」は、JSONとして正しくありません。事前にオブジェクト1つごとに切り出しておきましょう。

投稿2023/07/10 04:20

maisumakun

総合スコア146544

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

質問文に提示されているJSONのフォーマット間違いですから
問題点はJSONデータが悪い、ということになりますね。
2つのオブジェクトが含まれるとしたら配列にしたデータとか?

json

1[{ 2 "logLevel": "INFO", 3 "timestamp": "", 4 "sequence_id": "", 5 "user-key": "", 6 "group-id": "xxxxxxxxx", 7 "type": "", 8 "data": { 9 "messages": [ 10 { 11 "role": "user", 12 "content": "こんにちは" 13 }, 14 { 15 "role": "assistant", 16 "content": "、こんにちは!。" 17 }, 18 { 19 "role": "user", 20 "content": "thank you" 21 } 22 ], 23 "temperature": 0, 24 "llm_options": { 25 "llamaindex": { 26 "files": [ 27 { 28 "file_name": "xxxxxxx.pptx" 29 } 30 ] 31 } 32 } 33 } 34}, 35{ 36 "logLevel": "INFO", 37 "timestamp": "", 38 "sequence_id": "", 39 "user-key": "", 40 "group-id": "", 41 "type": "", 42 "data": { 43 "statusCode": "", 44 "headers": { 45 "Content-Type": "application/json" 46 }, 47 "body": { 48 "id": "", 49 "object": "xxxxxxxxxxxx", 50 "created": "xxxxxxxxxxxx", 51 "model": "xxxxxxxxxxxx", 52 "choices": [ 53 { 54 "index": 0, 55 "finish_reason": "stop", 56 "message": { 57 "role": "assistant", 58 "content": "xxxxxxxxxxxxxxxxx" 59 } 60 } 61 ], 62 "usage": { 63 "completion_tokens": "000", 64 "prompt_tokens": "0000", 65 "total_tokens": "0000" 66 }, 67 "mod_user_content": "xxxxxxxxxxxxxxxx" 68 } 69 } 70}]

投稿2023/07/10 10:39

odataiki

総合スコア984

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

掲示されている読み取り対象の JSON ファイルには JSON 形式としては不正な部分があります。以下は元のファイルと適正化したファイルとの差分です。

diff

1$ diff -u data0.json data.json 2--- data0.json 2023-07-10 13:56:24.149603521 +0900 3+++ data.json 2023-07-10 13:57:06.270526156 +0900 4@@ -44,14 +44,14 @@ 5 "group-id": "", 6 "type": "", 7 "data": { 8- "statusCode": , 9+ "statusCode": 1, 10 "headers": { 11 "Content-Type": "application/json" 12 }, 13 "body": { 14 "id": "", 15 "object": "xxxxxxxxxxxx", 16- "created": xxxxxxxxxxxx, 17+ "created": "xxxxxxxxxxxx", 18 "model": "xxxxxxxxxxxx", 19 "choices": [ 20 { 21@@ -64,9 +64,9 @@ 22 } 23 ], 24 "usage": { 25- "completion_tokens": 000, 26- "prompt_tokens": 0000, 27- "total_tokens": 0000 28+ "completion_tokens": "000", 29+ "prompt_tokens": "0000", 30+ "total_tokens": "0000" 31 }, 32 "mod_user_content": "xxxxxxxxxxxxxxxx" 33 }

以下は上記の適正化したファイルを分割して読み込むコードです。

python

1import json 2import re 3from pprint import pprint 4 5inputFileName = 'data.json' 6with open(inputFileName, 'r', encoding='utf-8') as f: 7 js = re.split(r'(?<=})\n+(?={)', f.read()) 8 9data = [json.loads(i) for i in js] 10pprint(data[0]) 11pprint(data[1]) 12 13# {'data': {'llm_options': {'llamaindex': {'files': [{'file_name': 'xxxxxxx.pptx'}]}}, 14# 'messages': [{'content': 'こんにちは', 'role': 'user'}, 15# {'content': '、こんにちは!。', 'role': 'assistant'}, 16# {'content': 'thank you', 'role': 'user'}], 17# 'temperature': 0}, 18# 'group-id': 'xxxxxxxxx', 19# 'logLevel': 'INFO', 20# 'sequence_id': '', 21# 'timestamp': '', 22# 'type': '', 23# 'user-key': ''} 24# 25# {'data': {'body': {'choices': [{'finish_reason': 'stop', 26# 'index': 0, 27# 'message': {'content': 'xxxxxxxxxxxxxxxxx', 28# 'role': 'assistant'}}], 29# 'created': 'xxxxxxxxxxxx', 30# 'id': '', 31# 'mod_user_content': 'xxxxxxxxxxxxxxxx', 32# 'model': 'xxxxxxxxxxxx', 33# 'object': 'xxxxxxxxxxxx', 34# 'usage': {'completion_tokens': '000', 35# 'prompt_tokens': '0000', 36# 'total_tokens': '0000'}}, 37# 'headers': {'Content-Type': 'application/json'}, 38# 'statusCode': 1}, 39# 'group-id': '', 40# 'logLevel': 'INFO', 41# 'sequence_id': '', 42# 'timestamp': '', 43# 'type': '', 44# 'user-key': ''}

投稿2023/07/10 05:03

melian

総合スコア21118

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.31%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問