retrofit (simple) xml convert 사용시 아래 오류가 발생.

org.simpleframework.xml.core.ValueRequiredException : Unable to satisfy @org.simpleframework.xml.ElementList(data=false, empty=true, entry=, inline=false, name=, required=true, type=void) on field 'juso' ...

해결방법은 아래와 같다.

<results>
<common>
	<totalCount>366</totalCount>
	<currentPage>1</currentPage>
	<countPerPage>10</countPerPage>
	<errorCode>0</errorCode>
	<errorMessage>정상</errorMessage>
</common>
<juso>
	<roadAddr>
		<![CDATA[ 인천광역시 부평구 동수천로 1 (부평동) ]]>
	</roadAddr>
	<roadAddrPart1>
		<![CDATA[ 인천광역시 부평구 동수천로 1 ]]>
	</roadAddrPart1>
	<roadAddrPart2>
		<![CDATA[ (부평동) ]]>
	</roadAddrPart2>
	<jibunAddr>
		<![CDATA[ 인천광역시 부평구 부평동 161-12 ]]>
	</jibunAddr>
	<engAddr>
		<![CDATA[ 1, Dongsucheon-ro, Bupyeong-gu, Incheon ]]>
	</engAddr>
	<zipNo>
		<![CDATA[ 21403 ]]>
	</zipNo>
	<admCd>
		<![CDATA[ 2823710100 ]]>
	</admCd>
	<rnMgtSn>
		<![CDATA[ 282373154013 ]]>
	</rnMgtSn>
	<bdMgtSn>
		<![CDATA[ 2823710100101610012105442 ]]>
	</bdMgtSn>
	<detBdNmList>
		<![CDATA[ ]]>
	</detBdNmList>
</juso>
</results>

이런 형식으로 이루어진 xml인데 juso 노드의 경우 검색결과가 존재하지 않을 경우 값이 넘어오지 않는다.

그러므로 아래와 같이 작성해야 한다.

@Root(name="results")
public class Results {
	@ElementList(inline=true, entry="common")
	List<Common> common = new ArrayList<>();
	@ElementList(inline=true, entry="juso", required = false)
	List<Address> address = new ArrayList<>();
}

이렇게 required="false"를 지정해줘야 한다.



WRITTEN BY
덜구
시간나면 강아지들 데리고 캠핑도 가고, 셀프 리모델링도 하고 이것 저것 하면서 즐겁게 잘 살고 있습니다 :-)

트랙백  0 , 댓글 하나 달렸습니다.
secret