Gson:未从JSON生成POJO

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

这是我的架构类Server.java->

@Generated("org.jsonschema2pojo")
public class Server {

private String status;
private String updated;
private String hostId;
private String oSEXTSRVATTRHost;
private Networks addresses;
private List<Link> links = new ArrayList<Link>();
private Object keyName;
private Image image;
private Object oSEXTSTSTaskState;
private String oSEXTSTSVmState;
private String oSEXTSRVATTRInstanceName;
private String oSSRVUSGLaunchedAt;
private String oSEXTSRVATTRHypervisorHostname;
private Flavor flavor;
private String id;
private List<SecurityGroup> securityGroups = new ArrayList<SecurityGroup>();
private Object oSSRVUSGTerminatedAt;
private String oSEXTAZAvailabilityZone;
private String userId;
private String name;
private String created;
private String tenantId;
private String oSDCFDiskConfig;
private List<Object> osExtendedVolumesVolumesAttached = new ArrayList<Object>();
private String accessIPv4;
private String accessIPv6;
private Integer progress;
private Integer oSEXTSTSPowerState;
private String configDrive;
private Metadata metadata;
private Map<String, Object> additionalProperties = new HashMap<String, Object>();

public String getStatus() {
return status;
}
. ..
 More getters and setters here.
. ..
}

这是我要为其生成POJO的JSON字符串:-

{
"server": {
    "status": "ACTIVE",
    "updated": "2014-07-18T09:55:14Z",
    "hostId": "872e9b93ccd50b93612d49f4c371f49fe6365f02bcb51994868eb88f",
    "OS-EXT-SRV-ATTR:host": "controller",
    "addresses": {
        "officenet": [
            {
                "OS-EXT-IPS-MAC:mac_addr": "fa:16:3e:25:0d:c8",
                "version": 4,
                "addr": "10.43.1.183",
                "OS-EXT-IPS:type": "fixed"
            }
        ]
    },
    "links": [
        {
            "href": "http://10.43.1.197:8774/v2/1333f00f05564a02b3c4f608b9622fc9/servers/4e357d2e-b3b1-4160-95b9-fc9102a375d9",
            "rel": "self"
        },
        {
            "href": "http://10.43.1.197:8774/1333f00f05564a02b3c4f608b9622fc9/servers/4e357d2e-b3b1-4160-95b9-fc9102a375d9",
            "rel": "bookmark"
        }
    ],
    "key_name": null,
    "image": {
        "id": "b724ae53-9113-4e33-987a-f58fd9a4ec81",
        "links": [
            {
                "href": "http://10.43.1.197:8774/1333f00f05564a02b3c4f608b9622fc9/images/b724ae53-9113-4e33-987a-f58fd9a4ec81",
                "rel": "bookmark"
            }
        ]
    },
    "OS-EXT-STS:task_state": null,
    "OS-EXT-STS:vm_state": "active",
    "OS-EXT-SRV-ATTR:instance_name": "instance-00000017",
    "OS-SRV-USG:launched_at": "2014-07-11T11:43:41.000000",
    "OS-EXT-SRV-ATTR:hypervisor_hostname": "controller",
    "flavor": {
        "id": "2",
        "links": [
            {
                "href": "http://10.43.1.197:8774/1333f00f05564a02b3c4f608b9622fc9/flavors/2",
                "rel": "bookmark"
            }
        ]
    },
    "id": "4e357d2e-b3b1-4160-95b9-fc9102a375d9",
    "security_groups": [
        {
            "name": "default"
        }
    ],
    "OS-SRV-USG:terminated_at": null,
    "OS-EXT-AZ:availability_zone": "nova",
    "user_id": "a859477b42794e8fa6dbf339361bb268",
    "name": "Akshay-Debian-2",
    "created": "2014-07-11T11:43:35Z",
    "tenant_id": "1333f00f05564a02b3c4f608b9622fc9",
    "OS-DCF:diskConfig": "MANUAL",
    "os-extended-volumes:volumes_attached": [],
    "accessIPv4": "",
    "accessIPv6": "",
    "progress": 0,
    "OS-EXT-STS:power_state": 1,
    "config_drive": "",
    "metadata": {}
}

}

这是我的主要代码,它使用Gson从JSON字符串生成POJO:-

public class ServerDataMapper {


    public static void main(String Args[]) {

        String myJSONString = "{\n    \"server\": {\n        \"status\": \"ACTIVE\",\n        \"updated\": \"2014-07-18T09:55:14Z\",\n        \"hostId\": \"872e9b93ccd50b93612d49f4c371f49fe6365f02bcb51994868eb88f\",\n        \"OS-EXT-SRV-ATTR:host\": \"controller\",\n        \"addresses\": {\n            \"officenet\": [\n                {\n                    \"OS-EXT-IPS-MAC:mac_addr\": \"fa:16:3e:25:0d:c8\",\n                    \"version\": 4,\n                    \"addr\": \"10.43.1.183\",\n                    \"OS-EXT-IPS:type\": \"fixed\"\n                }\n            ]\n        },\n        \"links\": [\n            {\n                \"href\": \"http://10.43.1.197:8774/v2/1333f00f05564a02b3c4f608b9622fc9/servers/4e357d2e-b3b1-4160-95b9-fc9102a375d9\",\n                \"rel\": \"self\"\n            },\n            {\n                \"href\": \"http://10.43.1.197:8774/1333f00f05564a02b3c4f608b9622fc9/servers/4e357d2e-b3b1-4160-95b9-fc9102a375d9\",\n                \"rel\": \"bookmark\"\n            }\n        ],\n        \"key_name\": null,\n        \"image\": {\n            \"id\": \"b724ae53-9113-4e33-987a-f58fd9a4ec81\",\n            \"links\": [\n                {\n                    \"href\": \"http://10.43.1.197:8774/1333f00f05564a02b3c4f608b9622fc9/images/b724ae53-9113-4e33-987a-f58fd9a4ec81\",\n                    \"rel\": \"bookmark\"\n                }\n            ]\n        },\n        \"OS-EXT-STS:task_state\": null,\n        \"OS-EXT-STS:vm_state\": \"active\",\n        \"OS-EXT-SRV-ATTR:instance_name\": \"instance-00000017\",\n        \"OS-SRV-USG:launched_at\": \"2014-07-11T11:43:41.000000\",\n        \"OS-EXT-SRV-ATTR:hypervisor_hostname\": \"controller\",\n        \"flavor\": {\n            \"id\": \"2\",\n            \"links\": [\n                {\n                    \"href\": \"http://10.43.1.197:8774/1333f00f05564a02b3c4f608b9622fc9/flavors/2\",\n                    \"rel\": \"bookmark\"\n                }\n            ]\n        },\n        \"id\": \"4e357d2e-b3b1-4160-95b9-fc9102a375d9\",\n        \"security_groups\": [\n            {\n                \"name\": \"default\"\n            }\n        ],\n        \"OS-SRV-USG:terminated_at\": null,\n        \"OS-EXT-AZ:availability_zone\": \"nova\",\n        \"user_id\": \"a859477b42794e8fa6dbf339361bb268\",\n        \"name\": \"Akshay-Debian-2\",\n        \"created\": \"2014-07-11T11:43:35Z\",\n        \"tenant_id\": \"1333f00f05564a02b3c4f608b9622fc9\",\n        \"OS-DCF:diskConfig\": \"MANUAL\",\n        \"os-extended-volumes:volumes_attached\": [],\n        \"accessIPv4\": \"\",\n        \"accessIPv6\": \"\",\n        \"progress\": 0,\n        \"OS-EXT-STS:power_state\": 1,\n        \"config_drive\": \"\",\n        \"metadata\": {}\n    }\n}";

        try {
            Gson gson = new Gson();
            Server server = gson.fromJson( myJSONString, Server.class); 
            System.out.println(server.getName());         
            System.out.println(server.getHostId());
            System.out.println(server.getId());
            System.out.println(server.getTenantId());
            System.out.println(server.getStatus());
        } catch (Exception e) {
            e.printStackTrace();
        }                   
    }
}

我打印的getId等值是NULL,我不明白我在做什么错?请告诉我。编译没有错误,也没有警告。

java json pojo
1个回答
0
投票

这里是渴望的灵魂。生成Java代码以解析JSON,然后使用GSON库将该值设置为java对象。 https://www.easycodeforall.com/GenerateCodeForJSON.jsp

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