gpt4 book ai didi

java - 如何将 JSONObject 转换为带有字符串变量的 Java Bean?

转载 作者:行者123 更新时间:2023-12-01 18:22:28 25 4
gpt4 key购买 nike

如何转换 JSONObjectPersonBean如下?我有中介Personname场和一个List<String对于其他属性。 List大小不确定,但少于 10 项。

我的想法是创建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上面的一个 Java Bean JSON ,来自BaseX .

最佳答案

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

package groupBaseX.io;

import java.util.HashMap;
import java.util.Map;
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;

}

public PersonBean getPersonBean() {
personBean.setName(person.getName());

Map<String, AF> map = new HashMap<>();

AF attributeField = AF.GARBAGE;
person.getAttributes().forEach((s) -> {
map.put(s, attributeField.getType(s));
});

for (String key : map.keySet()) {
switch (map.get(key)) {
case HOME_PHONE:
log.fine(AF.HOME_PHONE.toString());
personBean.setHomePhone1(key);
break;
default:
log.fine(AF.HOME_PHONE.toString());
break;
}
}
return personBean;
}

}

枚举:

package groupBaseX.io;

import java.util.ArrayList;
import java.util.List;
import java.util.logging.Logger;

public class AttributeParser {

private static final Logger log = Logger.getLogger(AttributeParser.class.getName());
private List<String> attributes = new ArrayList<>();

private AttributeParser() {
}

public AttributeParser(List<String> attributes) {
this.attributes = attributes;
}

// ^(\+\d{1,2}\s)?\(?\d{3}\)?[\s.-]\d{3}[\s.-]\d{4}$ phone
// ^\d{5}(?:[-\s]\d{4})?$ zip
public void foo() {

boolean isPhone = false;
boolean isZip = false;
for (String s : attributes) {
int x = 3;
isPhone = false;
isZip = false;

}
}

}

但是,还是很尴尬。起点是 JSON,所以我确信比我更聪明的猴子已经想到了这一点。

关于java - 如何将 JSONObject 转换为带有字符串变量的 Java Bean?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60281164/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com