java - 在 Android 中使用 Jackson 的 JSONList 解析问题

标签 java android jackson

我正在尝试使用 Jackson 解析器解析 JSONList。如果列表包含多个元素,则解析工作正常。

String json = "{\"students\":[{\"id\":\"1\",\"name\":\"A\"}, {\"id\":\"2\",\"name\":\"B\"}]}";

如果只有一个元素,那么我们将得到一个只包含一个json对象的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。

提前致谢, 苏德希 B

最佳答案

studentList 类应该包含对象而不是 arrayList

public class StudentList {
    @JsonProperty("students")
    public Student students;
}

希望能解决你的问题

关于java - 在 Android 中使用 Jackson 的 JSONList 解析问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13796974/

相关文章:

java - 将日期传递给 postman 时出现“未找到转换器”错误

java - 为什么 Jackson 的 pretty-print 功能不起作用?

json - Dart:将 Map 转换为 JSON 并引用所有元素

java - 为什么这个文件没有被删除?

java - RxJava - 嵌套的 Observables? ( retrofit )

java - 具有动态 FTP 属性的 Spring Integration 上传

java - 从 Android 连接到 Jersey REST Web 服务

android - 分解轮廓路径

带有/*package*/后缀的Java package-private可见性成员

java - 比较两个 java.util.Dates 看它们是否在同一天