2017-02-27 9 views
-5

質問はJsonElementについてです。それがJsonの鍵の価値です。したがって、文字列は許可されます。空白がないと思われるスペースがあるとJSONが単純な文字列でクラッシュする

なぜ次の行でJSON構文の例外が発生するのですか?

new JsonParser().parse("Nexus 6") 

例外のスタックトレース:

com.google.gson.JsonSyntaxException: com.google.gson.stream.MalformedJsonException: Use JsonReader.setLenient(true) to accept malformed JSON at line 1 column 8 path $ 
                   at com.google.gson.JsonParser.parse(JsonParser.java:65) 
                   at com.google.gson.JsonParser.parse(JsonParser.java:45) 

更新:
なぜこれが行います。

更新JsonElementに文字列を変換している私は何に興味を持って、作業?

new JsonParser().parse("Blah"); 

アップデート3:
また、これは動作します:

new JsonParser().parse("Nexus_6") 
+4

「Nexus 6」は有効なJSONではありません。 –

+0

JsonReader.setLenient(true)を使用して、不正な形式のJSONを受け入れます。 – Ufkoku

+0

@MuhammadSaqlain:文字列です。なぜそれは有効ではないのですか? – Jim

答えて

2

ここでの問題は、数7「の文字列の下RFC-7159で説明したように、あなたの文字列値は引用符で始まり、終わっていないということです"

だからこのような何か:new JsonParser().parse("\"Nexus 6\"")は動作するはずです。

+0

ちょうど記録のために 'new JsonPrimitive'も動作します – Jim

関連する問題