これを書いたので、では Python と比較。。。
oboe2uran.hatenablog.com
題材: [ "a" , , "c" ] というテキストの解釈
Python の方、
[ "a" , "b" , "c" ] というテキストであれば、、
import json
print(json.loads('[ "a", "b" ,"c" ]'))
は、
['a', 'b', 'c']
問題の、、、[ "a" , , "c" ] というテキスト
print(json.loads('[ "a", ,"c" ]'))
は、
json.decoder.JSONDecodeError: Expecting value
になります。
Google Gson の方、
import java.util.stream.Collectors; import java.util.stream.StreamSupport; import com.google.gson.JsonParser;
String str = "[ \"a\", , \"c\" ]"; List<String> list = StreamSupport.stream(new JsonParser().parse(str).getAsJsonArray().spliterator(), false) .map(e->e.isJsonNull() ? "" : e.getAsString()) .collect(Collectors.toList()); list.stream().forEach(e->{ System.out.println("[" + e + "]"); });
結果は、
[a] [] [c]
とエラーにはしません。
JavaScript で、JSON.parse で読み込ませた時、
Uncaught SyntaxError: Unexpected token , in JSON at position
というエラーになるので、エラー扱いです。
これは、最後に、"," カンマを置いた時でも、
[ "a" , "b" , "c" , ]
Python/JavaScript → エラーにする
Gson → 正常に読み取れる
JSON が元々、JavaScript で使う為のフォーマットであることを目的に誕生したのだから、
Python のように、少しでも誤ったフォーマット=最後に余計に、カンマがあるなど。
は、JavaScript と同様に、エラーにするのが正しいのか。。
Google Gson の JsonParser のように、ある程度のフォーマットの「ブレ」を
許容した方が、現実は便利で良いのか、悩ましい。。