Java 将JSON转换为Getter/Setter语句
我知道有一些实用程序将获取一个大型嵌套JSON对象,并为其生成JavaPOJO 但是是否有任何实用程序会采用相同的JSON,并假设POJO已经存在,创建getter和setter语句,以实际使用JSON中的数据填充POJO 鉴于这个小JSON示例,我正在寻找一个实用程序来生成:Java 将JSON转换为Getter/Setter语句,java,json,Java,Json,我知道有一些实用程序将获取一个大型嵌套JSON对象,并为其生成JavaPOJO 但是是否有任何实用程序会采用相同的JSON,并假设POJO已经存在,创建getter和setter语句,以实际使用JSON中的数据填充POJO 鉴于这个小JSON示例,我正在寻找一个实用程序来生成: data.setSiteId(422950); 等等。它是一个非常大的JSON对象 { "data": { "siteId": 422950, "protocol": 1,
data.setSiteId(422950);
等等。它是一个非常大的JSON对象
{
"data": {
"siteId": 422950,
"protocol": 1,
"networkId": 253762,
"comsNetworkId": 0,
"circuitIds": [
"A",
"B",
"C",
"D",
"E",
"F"
],
"comsCircuitId": "",
"corpId": "",
"networkAccessType": 1,
"localExchangeCarrier": 19,
"ldCarrier": 1,
"isdnServiceType": 4,
"primarySwitchType": 6,
"t1PriTimeslots": "",
"centralOfficeSwitchType": 5,
"framingMode": 4,
"signaling": 7,
"encoding": 4,
"isdnLineFromCentrex": false,
"sharedDALTestPassed": false,
"t120": false
}
}
您可以在中简单地使用JSONObject类
<dependency>
<groupId>org.json</groupId>
<artifactId>json</artifactId>
<version>20141113</version>
</dependency>
org.json
json
20141113
您应该看看XStream,它只需很少的几行代码就可以实现您想要的功能。基本上:
YourPojo buildObjectFromString(String xmlString) {
XStream xStream = new XStream(new DomDriver());
xStream.alias("data", YourPojo.class);
return (YourPojo)xStream.fromXML(xmlString);
}
<dependency>
<groupId>xstream</groupId>
<artifactId>xstream</artifactId>
<version>1.2.2</version>
</dependency>
YourPojo buildObjectFromString(String-xmlString){
XStream XStream=newxstream(newdomdriver());
别名(“数据”,YourPojo.class);
返回(YourPojo)xStream.fromXML(xmlString);
}
xstream
xstream
1.2.2
为什么需要生成该源代码?难道你不能简单地将JSON反序列化到生成的POJO中吗?在Raffaelas注释中,这里有一个stackoverflow问题可能会让你走上正确的轨道。还有一些其他的反序列化,您应该尽量避免使用自定义反序列化。这是一个好问题。有时需要类型安全DTO,不仅仅是像JSONObject这样复杂的映射,而且是在非java世界(或封闭源代码)中生成的。然后(由@AleksiYrttiaho引用的线程))POJO类(User
,在本示例中)不存在,并且需要的是生成器(当然也可以手动),我不同意(但也不要放弃)。问题是(据我所知)关于更多类型安全解决方案的问题是“如何生成您的POJO类?”)-也许我错了?@JacekCz在问题中,OP说“假设POJO已经存在”似乎您是对的(我在跨主机和跨语言项目中工作过多;)问题是完全清楚的)那个么在你们的答案中,反序列化技术很少存在