0
a1='[{"v1":"value"}, {"v1":"value"}, ]' 
b1=json.loads(a1) 

例外を作成しますが、.

a2='[{"v1":"value"}, {"v1":"value"}]' 
b2=json.loads(a2) 

例外/エラーを作成しません。誰かが最初の例の最後のコンマがなぜそんなに大きな問題なのかを理解するのを手伝ってくれますか?

データを変更せずに最初の例を変換するにはどうすればよいですか?

4

2 に答える 2

1

これは、あなたの a1 JSON が無効であるためです:

JSONLint から:

Parse error on line 7:
..."value"    },    ]
--------------------^
Expecting 'STRING', 'NUMBER', 'NULL', 'TRUE', 'FALSE', '{', '['

a2 JSON は有効であるため、例外はありません。

編集:

コメント内の Bogdan の 'quick n dirty' ソリューションを使用すると、同じコードを保持しながら例外をミュートできます。

于 2013-09-17T04:57:06.427 に答える
1

JSON 構文では終端のコンマが許可されていないため、パーサーはそれを正しく拒否しています。

補足として、この構文も有効な Javascript ではありません。一部のブラウザーはそれを受け入れますが、そうする際に標準の範囲外で動作します。

于 2013-09-17T04:57:34.570 に答える