Java 如何反序列化对象或数组
如何处理来自子级的名称。我正在使用Java 如何反序列化对象或数组,java,gson,Java,Gson,如何处理来自子级的名称。我正在使用gson。 这是我的代码,我得到了illegalstateexception:应该是Begin对象,但在第行是Begin数组。。 我不知道如何迭代gson对象 Reader reader = jSONParser.getGSONFromUrl(url); Root response=null; try { response = new Gson().fromJson(reader, Root.class);
gson
。
这是我的代码,我得到了illegalstateexception:应该是Begin对象,但在第行是Begin数组。。
我不知道如何迭代gson对象
Reader reader = jSONParser.getGSONFromUrl(url);
Root response=null;
try {
response = new Gson().fromJson(reader, Root.class);
person
= new ArrayList<Person>(Arrays.asList(response.person.clone()));
children
= new ArrayList<Child>(Arrays.asList(response.Children.clone()));
job
= response.job;
} catch (Exception e) {
// TODO: handle exception
System.out.println("JSONReader "+e.getMessage());
}
}
public class Root{
@SerializedName("person")
Person[] persons;
@SerializedName("job")
Job job;
@SerializedName("children")
Child[] children;
如何处理来自子级的名称。我正在使用gson
。
这是我的代码,我得到了illegalstateexception:应该是Begin对象,但在第行是Begin数组。。
我不知道如何迭代gson对象以获得名称,您需要具有以下路径:
Reader reader = jSONParser.getGSONFromUrl(url);
Root response=null;
try {
response = new Gson().fromJson(reader, Root.class);
person
= new ArrayList<Person>(Arrays.asList(response.person.clone()));
children
= new ArrayList<Child>(Arrays.asList(response.Children.clone()));
job
= response.job;
} catch (Exception e) {
// TODO: handle exception
System.out.println("JSONReader "+e.getMessage());
}
}
public class Root{
@SerializedName("person")
Person[] persons;
@SerializedName("job")
Job job;
@SerializedName("children")
Child[] children;
children.name
如果您有一个名数组,则应以数组形式访问:
children.name.firstname[编号]
由于“name”是一种对象类型,您可以通过“.”class Root{List persons;Job Job;Child}引用它的任何字段。上述注释无效。请发布您试图反序列化到的类,以及您看到的错误(如果有)或其他症状,以及您希望看到的内容。据我所知,在问题描述中,自定义反序列化对于处理JSON有时是数组,有时是对象的情况是必要的。在以前的StackOverflow线程(如和)中已经介绍了使用Gson处理此特定问题。此信息基于较旧版本的Gson。有可能是一个较新的版本添加了或将添加一个configuratimable的副本,我认为OP正在尝试将这个JSON反序列化为Java,但在这样做时遇到了一些麻烦。不过,目前还不清楚错误是什么。嗯,他确实询问了有关该文档的信息,并且该文档以代码形式存在。我同意,如果他能提供更多的细节,事情就会更清楚。当然,这一点很好!我们只需要看看实际的问题是什么。我得到的是JSONReader java.lang.IllegalStateException:预期的是BEGIN_对象,但在第1行第5161216列是BEGIN_数组,所以为什么不提供正确的代码,完整的异常堆栈跟踪,并将您的问题表达得更清楚?另外,我对第1行(!)中的“516216列”有点困惑。。。你能想象那份文件吗?
{
person:[{}, {}, {}..],
job:{..},
children:{"cID":"1", "name":[{"firstname":"mark"}, {"firstname":"jan"}, {"firstname":"tamara"}...]}
}