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