2016-10-27 2 views
-1

null이 될 수있는 필드가있는 json 구조가 있습니다. 이와 같이 :Retrofit/GSON null 필드가 null 개체로 연결됩니다.

{ "objectA":{"fieldA":null}, "objectB":{"fieldB1":123,"fieldB2":"abcdef"} } 

이 경우 구조를 나타내는 전체 개체도 null이됩니다. 반면에 필드가

... {"fieldA":"xyz"} ... 

과 같이 null이 아닌 경우에는 비 직렬화가 정상적으로 작동합니다. 어떻게 될 수 있습니까? Gson 혼자 내 json 테스트 한 및 오른쪽 (유일한 fieldA null입니다) 그래서 문제가 retrofit에 있어야합니다!

내 개조/GSON 종속성은 다음과 같습니다

compile 'com.squareup.retrofit2:retrofit:2.1.0' 
compile 'com.squareup.retrofit2:converter-gson:2.1.0' 

응답 구조는 다음과 같습니다

public class ObjectResponse extends BaseResponse { 

@SerializedName("objectA") 
private ObjectA objectA; 

public ObjectA getObjectA() { 
    return objectA; 
} 
} 

public class ObjectA { 

@SerializedName("fieldA") 
private String fieldA; 

public String getFieldA() { 
    return fieldA; 
} 
} 

public class BaseResponse { 

@SerializedName("objectB") 
private ObjectB objectB; 

public ObjectB get ObjectB() { 
    return objectB; 
} 
} 

public class ObjectB { 

@SerializedName("fieldB1") 
private int fieldB1; 
@SerializedName("fieldB2") 
private String fieldB2; 

public int getFieldB1() { 
    return fieldB1; 
} 

public String getFieldB2() { 
    return fieldB2; 
} 
} 
+0

이상한 점 ... 모델의 정의와 pls를 사용하고있는 개장 버전을 게시 해주십시오. – Fred

답변

0

그것은 이유가 널 필드 아니라고 밝혀, 그러나 그것은 힌트입니다. (필자의 경우) 필드가 null 인 이유는 오류 값으로 설정된 HTTP 응답 코드로 이어지는 서버 측에 논리적 거부가 있다는 것이 었습니다. 그러나 개조는 응답 코드가 [200..300] 밖에 있으면 json에서 Java 객체로의 변환을 수행하지 않습니다.