【发布时间】:2017-05-01 19:09:16
【问题描述】:
我目前在尝试将此 VCAP_SERVICES 解析为 java 对象时遇到问题。我不太明白如何构造 POJO 以允许它映射 json 字符串中的值。有人可以帮我构建我的 pojo 以使其与 json 字符串对齐吗?
我想为这两个凭据创建对象:accessToken... jdbcurl。
VCAP_SERVICES
"VCAP_SERVICES": {
"user-provided": [
{
"credentials": {
"accessTokenUri": "tokenurl",
"apiUrl": "apiurl",
"clientId": "typeofID",
"clientSecret": "secretAf",
"scope": "none"
},
"syslog_drain_url": "",
"volume_mounts": [],
"label": "user-provided",
"name": "OAuth2",
"tags": []
},
{
"credentials": {
"jdbcUrl": "jdbc:oracle:connection[host]:[port]/service",
"spring.datasource.driver-class-name": "oracle.jdbc.OracleDriver",
"spring.datasource.initialize": "false"
},
"syslog_drain_url": "",
"volume_mounts": [],
"label": "user-provided",
"name": "Database",
"tags": []
}
]
Java 类
ObjectMapper mapper = new ObjectMapper();
//json String to Object
CupsProperties properties = mapper.readValue(VCAP_Services, CupsProperties.class);
System.out.println(properties.getJdbcUrl() + "!!!!!!!!!!!!!!!!!!!");
POJOS
public class UserProviderWrapper {
@JsonProperty("user-provided")
public List<CupsProperties> cupsProperties;
@JsonProperty("syslog_drain_url")
public String syslog_drain_url;
@JsonProperty("volume_mounts")
public List<String> volume_mounts;
@JsonProperty("label")
public String label;
@JsonProperty("name")
public String name;
@JsonProperty("tags")
public List<String> tags;
//getters and setters
public class CupsProperties {
@JsonProperty("jdbcUrl")
public String jdbcUrl;
@JsonProperty("spring.datasource.driver-class-name")
public String driver;
@JsonProperty("spring.datasource.initialize")
public String initialize;
//getters and setters
错误
无法识别的字段“用户提供”(类 rest.springframework.model.CupsProperties),未标记为可忽略(2 个已知属性:“jdbcUrl”、“dataSource”]) 在 [Source: {"user-provided":[{ "credentials": { "jdbcUrl": "jdbc:oracle:thin:user/pass//host:port/service", "spring.datasource.driver-class-名称”:“oracle.jdbc.OracleDriver”、“spring.datasource.initialize”:“假”}、“syslog_drain_url”:“”、“volume_mounts”:[]、“标签”:“用户提供”、“名称": "甲骨文", "标签": [] }]}; line: 1, column: 19](通过引用链:rest.springframework.model.CupsProperties["user-provided"])
【问题讨论】:
-
JsonProperty: baeldung.com/jackson-annotations#highlighter_520754
-
您只想从 JSON 中解析某些字段或将整个 JSON 转换为镜像 Java 层次结构对象?
-
@yogidilip 我个人只是想从 json 中删除某些字段。我一直在尝试,并遵循指南。我只想要“凭据”中的值
-
在这种情况下,您的 POJO 不必遵循特定的层次结构/结构。您可以手动解析JSON,只设置您感兴趣的字段。按照此示例解析examples.javacodegeeks.com/core-java/json/…
-
谢谢!层次结构非常混乱。另一个问题。如果我添加另一个服务,我将有两个名为“凭据”的字段,这将如何工作?更新帖子。