Java 杰克逊遗漏了价值观
我正在尝试将JSON映射到简单的Java DTO。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
以下是我的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;
...
}
}