Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/343.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何使用泛型类型从rest调用解析json列表?_Java_Json_Rest - Fatal编程技术网

Java 如何使用泛型类型从rest调用解析json列表?

Java 如何使用泛型类型从rest调用解析json列表?,java,json,rest,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"

我正在尝试解析以下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>>(){});
Map switchMap=response.getEntity(新的GenericType(){});
下面是我的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;
    }


}
public类SwitchAllJson{
私有字符串版本;
private List portDesc=new ArrayList();
公共字符串getVersion(){
返回版本;
}
公共void setVersion(字符串版本){
this.version=版本;
}
公共列表getPortDesc(){
返回端口描述;
}
公共void setPortDesc(列表portDesc){
this.portDesc=portDesc;
}
}
公共类PortDescriptionJson{
私有字符串端口号;
私服;
私有字符串名称;
私有列表配置;
私人名单国家;
私有列表功能;
私人列表广告功能;
私有列表支持的功能;
私有列表peerFeatures;
私有字符串速度;
私有字符串maxSpeed;
公共字符串getHardwareAddress(){
归还这件硬衣服;
}
公共字符串getPortNumber(){
返回此.portNumber;
}
公共无效设置硬件地址(字符串硬件地址){
this.hardwareAddress=hardwareAddress;
}
public void setPortNumber(字符串portNumber){
this.portNumber=portNumber;
}
公共字符串getName(){
返回名称;
}
公共void集合名(字符串名){
this.name=名称;
}
公共列表getConfig(){
返回配置;
}
公共无效设置配置(列表配置){
this.config=config;
}
公共列表getState(){
返回状态;
}
公共无效设置状态(列表状态){
this.state=状态;
}
公共列表getCurrentFeatures(){
回流特性;
}
公共无效setCurrentFeatures(列出currentFeatures){
this.currentFeatures=currentFeatures;
}
公共列表getAdvertisedFeatures(){
返回广告功能;
}
public void setAdvertisedFeatures(列出advertisedFeatures){
this.advertisedFeatures=advertisedFeatures;
}
公共列表getSupportedFeatures(){
返回支持的功能;
}
公共void设置支持的功能(列出支持的功能){
this.supportedFeatures=supportedFeatures;
}
公共列表getPeerFeatures(){
返回peerFeatures;
}
公共无效设置对等功能(列出对等功能){
this.peerFeatures=peerFeatures;
}
公共字符串getCurrSpeed(){
返回速度;
}
公共无效设置currSpeed(字符串currSpeed){
这个.currSpeed=currSpeed;
}
公共字符串getMaxSpeed(){
返回最大速度;
}
public void setMaxSpeed(字符串maxSpeed){
this.maxSpeed=maxSpeed;
}
}

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

将属性的名称重命名为Json字段名。e、 g.portDesc->port_desc

主题外提示:如果您想增加获得正确答案的机会,请尽量将示例限制在最低限度。没有多少人愿意调试数百行代码。阅读更多关于:/。此外,在创建这样一个最小的示例时,您很有可能会找到问题的原因。这是因为您必须在json文本和java类中使用相同的名称,否则反序列化程序将无法正确映射它们。您可以使用将json转换为java类