2016-07-28 2 views
-1

아는대로 모든 JSON 필드 이름은 문자열 값입니다. 그러나 문자열인지 확인하기 위해 JSON의 "키"에서 문자열 검사를 수행하는 코드 스 니펫이 발생했으며 그렇지 않은 경우 예외가 발생합니다. 그것은 다음과 같습니다 :JSON 필드를 문자열로 사용할 수 있습니까?

if (!(key instanceof String)){ 
    throw new exception();} 

이 검사가 필요합니까?

편집 :

예를 들어

,

while (jp.nextToken() == JsonToken.FIELD_NAME){ 
    String key = jp.getCurrentName(); 
} 

이 코드는 문자열 JSON 토큰에 진행됩니다, 그래서 JSON이되도록 문자열이 아닌 fieldName에 포함되어 수 있는지 궁금 잭슨 구문 분석기는 필드 이름을 건너 뜁니다. JSON official website 가입일

+0

? 나는 GSON에서 모든 키가 문자열이어야 함을 알고있다. – Jeeter

+0

@Jeeter "GSON에서 모든 키는 문자열이어야한다"는 뜻인가? GSON 파서는 키가 문자열이라고 가정하고 그렇지 않으면 예외를 던질 것인가? 나는 잭슨 도서관을 사용하여 건물을 짓고 있는데, 그것은 또한 키가 String이 될 것이라고 가정하는 것으로 보인다. 왜냐하면'getCurrentName'은 객체가 아닌 문자열을 반환 할 것이기 때문에 잭슨이 비 문자열 필드 이름을 처리하는 방법을 궁금해하고있다. 유효한 JSON은 문자열이 아닌 필드 이름을 포함 할 수도 있습니다. –

+0

사용중인 파서를 표시 할 수 있습니까? '열쇠'가 무엇인지, 어떻게 선언되었는지, 무엇을 만들었는지 보여주십시오. –

답변

1

(프록시에 의해, JSON Data Interchange Standard는)

enter image description here

객체를 생성, 키는 String이어야한다.


편집 : @SotiriosDelimanolis는 의견에 지적이는 반드시 한 번 자바 라이브러리를 통해 구문 분석되지는 JSON 파일의 형식에 적용됩니다.

잭슨, 예를 들어, 사용자 정의 유형으로 키를 역 직렬화 할 수

- 상황에 따라 다르다 @SotiriosDelimanolis

관련 문제