Jackson パーサーを使用して JSONList を解析しようとしています。リストに複数の要素が含まれている場合、解析は正常に機能しています。
String json = "{\"students\":[{\"id\":\"1\",\"name\":\"A\"}, {\"id\":\"2\",\"name\":\"B\"}]}";
要素が 1 つしかない場合は、json オブジェクトを 1 つだけ含む json を取得します。
String json = "{\"students\":{\"id\":\"1\",\"name\":\"A\"}}";
その時、次のエラーが表示されます
12-10 15:49:01.527: W/System.err(18923): org.codehaus.jackson.map.JsonMappingException: Can not deserialize instance of java.util.ArrayList out of START_OBJECT token
私は次のコードを使用しています:
@JsonIgnoreProperties(ignoreUnknown = true)
public class Student {
@JsonProperty("id")
public String id;
@JsonProperty("name")
public String name;
}
@JsonIgnoreProperties(ignoreUnknown = true)
public class StudentList {
@JsonProperty("students")
ArrayList<Student> students = new ArrayList<Student>();
}
public class JacksonTest extends Activity {
StudentList studentList;
//String json = "{\"students\":[{\"id\":\"1\",\"name\":\"A\"}, {\"id\":\"2\",\"name\":\"B\"}]}";
String json = "{\"students\":{\"id\":\"1\",\"name\":\"A\"}}";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_jackson_test);
ObjectMapper objectMapper = new ObjectMapper();
JsonFactory jf = new JsonFactory();
try {
JsonParser jp = jf.createJsonParser(json);
jp.setFeature(JsonParser.Feature.ALLOW_UNQUOTED_CONTROL_CHARS,true);
studentList = objectMapper.readValue(jp, StudentList.class);
System.out.println("Size :"+studentList.students.size());
}
catch (JsonParseException e) {
e.printStackTrace();
}
catch (JsonMappingException e) {
e.printStackTrace();
}
catch (IOException e) {
e.printStackTrace();
}
}
}
この問題を解決するために私を助けてください。実際には、多数のリストを含む非常に大きなjsonを解析したいと考えています。
前もって感謝します、Sudheesh B