86876


Python 3.9.10を使っています。  
JSONファイルを読もうとしたときに、

[code]

    import pandas as pd
    
    json_file = open(ファイルパス, 'r', encoding='utf-8')
    df = pd.read_json(json_file)
    
[/code]

というようなことをやっていますが、エラーが出ることがあります。エラーの意味することが何なのかというかということは、この場では置いておいて、JSONデータのどこかに間違えがあるのだろうかと思います。  
JSONファイルの中のどこに間違えがあるのか、行番号や文字位置などを特定する方法あありませんか？

今回の質問ではエラーの中身はとくに何でもよいのですが、一例です。

[code]

    loads(json, precise_float=self.precise_float), dtype=None
    ValueError: Unexpected character found when decoding object value
    
[/code]

よろしくお願いいたします。


CC BY-SA 4.0
2022-03-17T07:31:31.593
86871
2022-03-17T12:12:57.517
2022-03-17T12:12:57.517
3060
43160
question
python pandas json
JSONファイルのエラー箇所の特定


何時どんな風にチェック出来ればよいかが曖昧ですが、`json.tool`というモジュールが使えるのでは？  
[コマンドラインインターフェイス- json --- JSON
エンコーダおよびデコーダ](https://docs.python.org/ja/3/library/json.html#module-json.tool)

> json.tool モジュールは JSON オブジェクトの検証と整形出力のための、単純なコマンドラインインターフェイスを提供します。

例えばこちらの記事で：  
[Validate JSON data using Python](https://pynative.com/python-json-
validation/)

こんな感じで報告されるとの記述が有ります。

[code]

    error expecting property name enclosed in double quotes: line 1 column 2 (char 1)
    
[/code]

* * *

[Validate JSON data using
python](https://stackoverflow.com/q/54491156/9014308)  
あるいはこちらの記事では必要なデータ構造の仕様も含めて厳密にチェックしたいという要望らしく、そこでは承認されていませんが、こんな回答があります。

こちらは承認された回答でJSON Schemaというものを使う。  
[承認された回答](https://stackoverflow.com/a/54491882/9014308)  
その[JSON Schema](https://json-schema.org/)のドキュメントページ

上記JSON
Schemaはオーバーキルなので標準のjsonモジュールのload/loadsを使って、exceptionが発生した場合にその内容を詳しく表示するというもの。  
[基本的なエラーを見つけるだけの回答例](https://stackoverflow.com/a/66467918/9014308)  
内容的にはjson.toolで報告されるのと同等のものと思われます。


CC BY-SA 4.0
2022-03-17T08:39:11.973
86873
2022-03-17T08:39:11.973
26370
86871
answer


VS Codeで JSONファイルを読み込むと, 問題のある箇所に赤の波線がでます。  
(VS Codeに限らず多機能なエディターにはその手のツールが備わっている可能性も)

そのようなツール利用すると良いかもです。  
参考: (code.visualstudio.com) [Editing JSON with Visual Studio
Code](https://code.visualstudio.com/docs/languages/json)


CC BY-SA 4.0
2022-03-17T09:06:16.433
86876
2022-03-17T09:06:16.433
43025
86871
answer