如何通过字符串变量将JSONObject转换为Java Bean?

问题描述 投票:0回答:1

如何将JSONObject转换为PersonBean,如下所示?我有一个带有Person字段和一个name其他属性的中介List<StringList的大小不确定,但少于十个项目。

我的想法是使用其他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

java json parsing javabeans basex
1个回答
0
投票

这是我选择的一种比较合理的方法:

© www.soinside.com 2019 - 2024. All rights reserved.