Java 将JSON转换为Getter/Setter语句

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,

我知道有一些实用程序将获取一个大型嵌套JSON对象,并为其生成JavaPOJO

但是是否有任何实用程序会采用相同的JSON,并假设POJO已经存在,创建getter和setter语句,以实际使用JSON中的数据填充POJO

鉴于这个小JSON示例,我正在寻找一个实用程序来生成:

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已经存在”似乎您是对的(我在跨主机和跨语言项目中工作过多;)问题是完全清楚的)那个么在你们的答案中,反序列化技术很少存在