2017-05-08 24 views
1

Android 용 Moshi 라이브러리를 사용하여 Java 객체를 JSON으로 변환하려고합니다. 개체 유형ArrayList <float[]>을 Moshi JSON 라이브러리 (Android 용)를 사용하여

의 ArrayList의 속성이 포함 < 플로트 []>

와 나는 개체를 변환하려면 다음 어댑터를 등록하고있다.

java.lang.IllegalArgumentException가 : 의 java.util.ArrayList는 [] 주석 플랫폼 명시 JsonAdapter가 에 등록 할 필요

Type type = Types.newParameterizedType 
     (List.class, HistoryPath.class, ArrayList.class, Float[].class, Float.class); 

JsonAdapter<Drawing> adapter = moshi.adapter(type); 

String json = adapter.toJson(drawing); 

은 "toJson"방법은 다음의 예외 실패 com.squareup.moshi.ClassJsonAdapter $ 1.create (ClassJsonAdapter.java:50) at com.squareup.moshi.Moshi.adapter (Moshi.java:99) at com.squar (ClassJsonAdapter.java:90) ( ) : 99) com.squareup.moshi에서 com.squareup.moshi.ClassJsonAdapter의 $의 1.create에서 com.squareup.moshi.ClassJsonAdapter $ 1.createFieldBindings (ClassJsonAdapter.java:90) (ClassJsonAdapter.java:74) 에서 .Moshi.adapter (Moshi.java:99) at com.squareup.moshi.Moshi.adapter (Moshi.java:57) at com.squareup.moshi.Collectio com.squareup.moshi.Moshi.adapter (Moshi.java:99) 에서 com.squareup.moshi.CollectionJsonAdapter $의 1.create (CollectionJsonAdapter.java:35) 에서 nJsonAdapter.newArrayListAdapter (CollectionJsonAdapter.java:51) 에서 , com.squareup.moshi.Moshi.adapter (Moshi.java:57는)

나는 내 타입 정의가 잘못 생각하지만 난

답변

3

ArrayList를이 플랫폼 유형 올바른 값을 찾을 수 없습니다 오류는 말합니다. List를 사용하거나 ArrayList 전용으로 사용자 정의 JsonAdapter를 만들 수 있습니다.

또한, 여기에 문제가있다 : Type type = Types.newParameterizedType(List.class, HistoryPath.class, ArrayList.class, Float[].class, Float.class);

이 유형이 유효하지 List<HistoryPath, ArrayList, Float[], Float>이며,이 JsonAdapter<Drawing> adapter = moshi.adapter(type);에 대한 올바른 결과를 얻을하지 않습니다.

아마도 JsonAdapter<Drawing> adapter = moshi.adapter(Drawing.class);을 원할 것입니다.

+0

얻기 귀하의 제안에 따라 다른 오류 : ArrayList를 [] – AndroidGuy

+1

@androidguy ArrayList를이 플랫폼 유형입니다 등록 할 수있는 명시 적 JsonAdapter을 필요로 주석. JsonAdapter를 등록하거나 List를 사용해야합니다. –