如何将JSONObject
转换为PersonBean
,如下所示?我有一个带有Person
字段和一个name
其他属性的中介List<String
。 List
的大小不确定,但少于十个项目。
我的想法是使用其他PersonBean
字段创建String
,然后将List
中的值手动复制到bean的设置器中。
但是,当创建一个PersonBean
时,我当然会遇到错误,因为List
可能为空:
package groupBaseX.io;
import java.util.logging.Logger;
public class PersonBeanBuilder {
private static final Logger log = Logger.getLogger(PersonBeanBuilder.class.getName());
private Person person = null;
private PersonBean personBean = new PersonBean();
private PersonBeanBuilder() {
}
public PersonBeanBuilder(Person person) {
this.person = person;
log.fine(person.toString());
log.fine(person.getName());
personBean.setName(person.getName());
String a = person.getAttributes().get(0);
String b = person.getAttributes().get(1);
String c = person.getAttributes().get(2);
String d = person.getAttributes().get(3);
String e = person.getAttributes().get(4);
personBean.setA(a);
personBean.setB(b);
personBean.setC(c);
personBean.setD(d);
personBean.setE(e);
}
public PersonBean getPersonBean() {
return personBean;
}
}
当然,我只能使用try/catch
,但是没有更优雅的解决方案吗?上面的代码非常麻烦。
因为JSON
中的基础JSONArray
的大小不确定。出于实际目的,我只对下面每个对象的名称和前几个属性感兴趣:
[
{
"0":"z10",
"1":"y9",
"2":"x7",
"3":"atrib6",
"name":"alice"
},
{
"0":"home5",
"1":"cell4",
"name":"sue"
},
{
"0":"phone3",
"1":"phone2",
"2":"phone1",
"name":"joe"
},
{
"name":"people"
}
]
某些JSONObject
当然将具有零个属性,但肯定少于十个。只需从上面的create中寻找JSON
一个Java Bean,该Java Bean就来自BaseX
。
这是我选择的一种比较合理的方法: