2017-02-27 182 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

只是爲了紀錄也'新的JsonPrimitive'也適用 – Jim