Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/322.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 杰克逊遗漏了价值观_Java_Json_Jackson - Fatal编程技术网

Java 杰克逊遗漏了价值观

Java 杰克逊遗漏了价值观,java,json,jackson,Java,Json,Jackson,我正在尝试将JSON映射到简单的Java DTO。 以下是我的Java结构: public class VirtualServerResponse { private String kind; private String selfLink; private List<VirtualServer> items = new ArrayList<VirtualServer>(); //no arg constructor //gette

我正在尝试将JSON映射到简单的Java DTO。
以下是我的Java结构:

public class VirtualServerResponse {
    private String kind;
    private String selfLink;
    private List<VirtualServer> items = new ArrayList<VirtualServer>();
    //no arg constructor
    //getters and setters

@JsonIgnoreProperties(ignoreUnknown = true)
public class VirtualServer {
    public String kind;
    public String name;
    public String partition;
    public String fullPath;
    public String generation;
    public String selfLink;
    public String addressStatus;
    public String autoLasthop;
    public String cmpEnabled;
    public String connectionLimit;
    public String description;
    public String destination;
    public String enabled;
    public String gtmScore;
    public String ipProtocol;
    public String mask;
    public String mirror;
    public String mobileAppTunnel;
    public String nat64;
    public String pool;
    public String rateLimit;
    public String rateLimitDstMask;
    public String rateLimitMode;
    public String rateLimitSrcMask;
    public String serviceDownImmediateAction;
    public String source;
    public String sourcePort;
    public String synCookieStatus;
    public String translateAddress;
    public String translatePort;
    public String vlansEnabled;
    public String vsIndex;
    public PoolDTO assignedPool;

    public VirtualServer() {
    }
    //getters and setters
JSON由整个JSON映射到一行:

while ((line = br.readLine()) != null) {
    this.jsonResponse = m.readValue(line, VirtualServerResponse.class);
}
我不需要
项中的所有子项,所以我使用了JsonIgnoreUnknown来释放它们。但是,映射的属性只有几个:
种类、名称、分区、完整路径、生成、自链接和描述


其他的都是空的。有人能帮我吗?

似乎有不同级别的属性

您已经映射了一个对象,该对象的所有特性都直接位于根下,因此所有其他嵌套特性都不可见

如果json类似于:

{
   "kind":"tm:ltm:virtual:virtualcollectionstate",
   "selfLink":"https://localhost/mgmt/tm/ltm/virtual?expandSubcollections=true&ver=13.1.1.2",
   "items":[
      {
        "kind":"tm:ltm:virtual:virtualstate",
        "name":"some_name_with:80",
        "partition":"part",
        "fullPath":"/part/name",
        ...
      }
   ]
}
您需要将其映射到类似以下内容的对象:

public class VirtualServer {
   private String kind;
   private String selfLink;
   private List<VirtualServer.Item> items;
   ...

   public static class Item {
       private String kind;
       private String name;
       private String partition;
       private String fullPath;

       ...
   }
}
公共类虚拟服务器{
私有字符串类;
私有字符串自链接;
私人清单项目;
...
公共静态类项{
私有字符串类;
私有字符串名称;
私有字符串划分;
私有字符串完整路径;
...
}
}

很抱歉,但我对你的问题有点困惑。这就是你要找的吗?我想将所有json属性映射到它们的java变量,但正如我所说的,这只适用于少量提示,但是为什么一些值设置正确呢?我会试试这个。在遍历列表时从外部访问静态类如何?@ItFreak您可以遍历保存在属性项中的列表。如下所示(VirtualServer.Item:myVirtualServer.getItems()){…}
谢谢,我会再试一次this@ItFreak在VirtualServer级别和项目级别都有一些属性。我假设在本例中,您只设置了VirtualServer级别的,例如种类“tm:ltm:virtual:virtualcollectionstate”,而不是种类“tm:ltm:virtual:virtualstate”
public class VirtualServer {
   private String kind;
   private String selfLink;
   private List<VirtualServer.Item> items;
   ...

   public static class Item {
       private String kind;
       private String name;
       private String partition;
       private String fullPath;

       ...
   }
}