java - 如何使用泛型类型解析来自其余调用的 json 列表?

标签 java json rest

我正在尝试解析下面的 json:

{
  "00:00:08:00:27:5d:39:55": {
    "version": "OF_13",
    "port_desc": [
      {
        "port_number": "local",
        "hardware_address": "08:00:27:5d:39:55",
        "name": "flips",
        "config": [
          "PORT_DOWN"
        ],
        "state": [
          "LINK_DOWN"
        ],
        "current_features": [],
        "advertised_features": [],
        "supported_features": [],
        "peer_features": [],
        "curr_speed": "0",
        "max_speed": "0"
      },
      {
        "port_number": "1",
        "hardware_address": "08:00:27:5d:39:55",
        "name": "eth1",
        "config": [],
        "state": [],
        "current_features": [
          "PF_1GB_FD",
          "PF_COPPER",
          "PF_AUTONEG"
        ],
        "advertised_features": [
          "PF_10MB_HD",
          "PF_10MB_FD",
          "PF_100MB_HD",
          "PF_100MB_FD",
          "PF_1GB_FD",
          "PF_COPPER",
          "PF_AUTONEG"
        ],
        "supported_features": [
          "PF_10MB_HD",
          "PF_10MB_FD",
          "PF_100MB_HD",
          "PF_100MB_FD",
          "PF_1GB_FD",
          "PF_COPPER",
          "PF_AUTONEG"
        ],
        "peer_features": [],
        "curr_speed": "1000000",
        "max_speed": "1000000"
      },
      {
        "port_number": "2",
        "hardware_address": "08:00:27:86:14:71",
        "name": "eth2",
        "config": [],
        "state": [],
        "current_features": [
          "PF_1GB_FD",
          "PF_COPPER",
          "PF_AUTONEG"
        ],
        "advertised_features": [
          "PF_10MB_HD",
          "PF_10MB_FD",
          "PF_100MB_HD",
          "PF_100MB_FD",
          "PF_1GB_FD",
          "PF_COPPER",
          "PF_AUTONEG"
        ],
        "supported_features": [
          "PF_10MB_HD",
          "PF_10MB_FD",
          "PF_100MB_HD",
          "PF_100MB_FD",
          "PF_1GB_FD",
          "PF_COPPER",
          "PF_AUTONEG"
        ],
        "peer_features": [],
        "curr_speed": "1000000",
        "max_speed": "1000000"
      },
      {
        "port_number": "3",
        "hardware_address": "08:00:27:aa:7d:02",
        "name": "eth3",
        "config": [],
        "state": [],
        "current_features": [
          "PF_1GB_FD",
          "PF_COPPER",
          "PF_AUTONEG"
        ],
        "advertised_features": [
          "PF_10MB_HD",
          "PF_10MB_FD",
          "PF_100MB_HD",
          "PF_100MB_FD",
          "PF_1GB_FD",
          "PF_COPPER",
          "PF_AUTONEG"
        ],
        "supported_features": [
          "PF_10MB_HD",
          "PF_10MB_FD",
          "PF_100MB_HD",
          "PF_100MB_FD",
          "PF_1GB_FD",
          "PF_COPPER",
          "PF_AUTONEG"
        ],
        "peer_features": [],
        "curr_speed": "1000000",
        "max_speed": "1000000"
      }
    ]
  }
}

我正在使用下面的代码集从 Rest 接收 Json:

Map<String, SwitchAllJson> switchMap = response.getEntity(new GenericType<Map<String, SwitchAllJson>>(){});

下面是我的 Java 类:

public class SwitchAllJson {
    private String version;
    private List<PortDescriptionJson> portDesc =new  ArrayList<PortDescriptionJson>();

    public String getVersion() {
        return version;
    }
    public void setVersion(String version) {
        this.version = version;
    }
    public List<PortDescriptionJson> getPortDesc() {
        return portDesc;
    }
    public void setPortDesc(List<PortDescriptionJson> portDesc) {
        this.portDesc = portDesc;
    }

}


public class PortDescriptionJson {

      private String portNumber;
      private String hardwareAddress;
      private String name;
      private List<String> config;
      private List<String> state;
      private List<String> currentFeatures;
      private List<String> advertisedFeatures;
      private List<String> supportedFeatures;
      private List<String> peerFeatures;
      private String currSpeed;
      private String maxSpeed;

    public String getHardwareAddress(){
         return this.hardwareAddress;
    }

    public String getPortNumber(){
         return this.portNumber;
    }

    public void setHardwareAddress(String hardwareAddress){
         this.hardwareAddress=hardwareAddress;
    }

    public void setPortNumber(String portNumber){
         this.portNumber=portNumber;
    }


    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public List<String> getConfig() {
        return config;
    }

    public void setConfig(List<String> config) {
        this.config = config;
    }

    public List<String> getState() {
        return state;
    }

    public void setState(List<String> state) {
        this.state = state;
    }

    public List<String> getCurrentFeatures() {
        return currentFeatures;
    }

    public void setCurrentFeatures(List<String> currentFeatures) {
        this.currentFeatures = currentFeatures;
    }

    public List<String> getAdvertisedFeatures() {
        return advertisedFeatures;
    }

    public void setAdvertisedFeatures(List<String> advertisedFeatures) {
        this.advertisedFeatures = advertisedFeatures;
    }

    public List<String> getSupportedFeatures() {
        return supportedFeatures;
    }

    public void setSupportedFeatures(List<String> supportedFeatures) {
        this.supportedFeatures = supportedFeatures;
    }

    public List<String> getPeerFeatures() {
        return peerFeatures;
    }

    public void setPeer_features(List<String> peerFeatures) {
        this.peerFeatures = peerFeatures;
    }

    public String getCurrSpeed() {
        return currSpeed;
    }

    public void setCurrSpeed(String currSpeed) {
        this.currSpeed = currSpeed;
    }

    public String getMaxSpeed() {
        return maxSpeed;
    }

    public void setMaxSpeed(String maxSpeed) {
        this.maxSpeed = maxSpeed;
    }


}

我能够解析 00:00:08:00:27:5d:39:55 和版本,但我在 port_desc< 中得到 null/。有人可以解释我做错了什么吗?

最佳答案

将属性名称重命名为 Json 字段名称。例如端口描述 -> 端口描述

关于java - 如何使用泛型类型解析来自其余调用的 json 列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40052365/

相关文章:

java - 如何更改 AsyncTask 中的 ListView?

json - Swift 可编码 : encode nil as an empty object

mysql - 注册页面数据存储但未收到 JSON 编码

java - 错误 : No class Def found error while setting up Java as a Windows Service

java - 触摸事件 : I want to recognize touches while moving with an another finger on the screen

java - 是否有可能在 Java 的条件中有一个条件

javascript - 使用 NgTable 参数通过 AJAX 加载 JSON

google-app-engine - 调用 App Engine Endpoints API 时如何生成 OAuth2.0 Bearer?

c# - 无法让 HTTP PUT 请求在 ASP.NET Core 中工作

http - REST 响应——我应该将新资源的 URL 放在标题、正文或两者中吗?