java - RestTemplate Exchange 与目标 class 作为嵌套映射和列表
java - RestTemplate Exchange with target class as Nested Map and Lists
我有一个 Rest 模板交换以获得服务。服务 returns 响应如下:
响应 1(单个文档):-
{
"irpage":[{
"drawer": "HPPS",
"folderNumber": "HPA00008047642",
"docID": "1",
"pageNumber": "1",
"din": "HPPSHPA00008047642000001",
"userKey1": "20151119NJ",
"docType": "APPD",
"docDate": "20151119",
"numberPages": "1",
"fileName": "_HPPS151119_Z000\SCHEDL22490010845",
"tempFileName": "\\prcins.net\Shared\irtestnjimages01_HPPS151119_Z000\SCHEDL22490010845.pdf",
"driver": "",
"dateCaptured": "20151119",
"timeCaptured": "08:45:04",
"singleInd": "S",
"userID": "SCHEDL2",
"status": "U",
"batch": "Z000",
"format": "PDF",
"media": "D",
"orientation": "0",
"tempDin": "12201511190845952490845SCHEDL2",
"transType": "APPD",
"operator": "",
"userkey2": "0",
"reason": "Computer Generated Document",
"archiveStatus": "A",
"archiveDate": "20151119",
"deviceID": "1",
"packageID": "1",
"packageType": "15007",
"markedInd": "0",
"dspPageNumber": "1",
"aMedia": "",
"aDrive": "",
"description": "Output",
"folderName": "GAIL BARTLING",
"docDescription": "Application Document",
"overlayID":空,
"docIndex": 空
}]
}
响应 2(多个文档):
{
"irpage":[{
"drawer": "HPPS",
"folderNumber": "HPA00008047642",
"docID": "1",
"pageNumber": "1",
"din": "HPPSHPA00008047642000001",
"userKey1": "20151119NJ",
"docType": "APPD",
"docDate": "20151119",
"numberPages": "1",
"fileName": "_HPPS151119_Z000\SCHEDL22490010845",
"tempFileName": "\\prcins.net\Shared\irtestnjimages01_HPPS151119_Z000\SCHEDL22490010845.pdf",
"driver": "",
"dateCaptured": "20151119",
"timeCaptured": "08:45:04",
"singleInd": "S",
"userID": "SCHEDL2",
"status": "U",
"batch": "Z000",
"format": "PDF",
"media": "D",
"orientation": "0",
"tempDin": "12201511190845952490845SCHEDL2",
"transType": "APPD",
"operator": "",
"userkey2": "0",
"reason": "Computer Generated Document",
"archiveStatus": "A",
"archiveDate": "20151119",
"deviceID": "1",
"packageID": "1",
"packageType": "15007",
"markedInd": "0",
"dspPageNumber": "1",
"aMedia": "",
"aDrive": "",
"description": "Output",
"folderName": "GAIL BARTLING",
"docDescription": "Application Document",
"overlayID":空,
"docIndex": 空
}, {
"drawer": "HPPS",
"folderNumber": "HPA00008047642",
"docID": "4",
"pageNumber": "1",
"din": "HPPSHPA00008047642000004",
"userKey1": "20160104NJ",
"docType": "FINA",
"docDate": "20160104",
"numberPages": "1",
"fileName": "_HPPS160105_Z000\SCHEDL28070010819",
"tempFileName": "\\prcins.net\Shared\irtestnjimages01_HPPS160105_Z000\SCHEDL28070010819.pdf",
"driver": "",
"dateCaptured": "20160105",
"timeCaptured": "08:19:30",
"singleInd": "S",
"userID": "SCHEDL2",
"status": "U",
"batch": "Z000",
"format": "PDF",
"media": "D",
"orientation": "0",
"tempDin": "12201601050819308070819SCHEDL2",
"transType": "FINA",
"operator": "",
"userkey2": "0",
"reason": "Computer Generated Document",
"archiveStatus": "A",
"archiveDate": "20160105",
"deviceID": "1",
"packageID": "4",
"packageType": "15007",
"markedInd": "0",
"dspPageNumber": "1",
"aMedia": "",
"aDrive": "",
"description": "Output",
"folderName": "GAIL BARTLING",
"docDescription": "Final Notice of Cancellation",
"overlayID":空,
"docIndex": 空
}]
}
当我提供 Class < E > 目标Class 作为
new HashMap< String, List< Map < String , String>>>().getClass()
Response2 得到解析,我在 Map 中得到结果,但是 response1(Single Document) 不起作用并且 returns 为空。
或者如果我提供 Class < E > 目标 Class 作为 new HashMap< String , Map < String, String >>().getClass() Response1 得到解析,我在 Map 中得到结果,但是 response2(Multiple Documents) 不起作用并且 returns 为 null .
我不确定如何处理和解析来自服务的两个响应?
responseMap = restUtils.findDocuments(urlBuilder.build(),new HashMap<String,List<Map<String,String>>>().getClass());
**RestUtils Class:**
public <E> E findDocuments(String url,Class<E> targetClass) throws JsonProcessingException {
MultiValueMap<String, String> headers = new LinkedMultiValueMap<String, String>();
headers.add(ACCEPT, MediaType.APPLICATION_JSON_VALUE);
headers.add(CONTENT_TYPE,MediaType.APPLICATION_JSON_VALUE);
//headers.add("id", StringUtils.trimToEmpty(policyNo));
HttpEntity<Object> requestEntity = new HttpEntity<Object>(headers);
ResponseEntity<E> response = restTemplate.exchange(url,HttpMethod.GET, requestEntity, targetClass);
ObjectMapper mapper = new ObjectMapper();
String jsonResponse = mapper.writeValueAsString(response);
System.out.println(jsonResponse);
return (E) response.getBody();
}
如有任何帮助,我们将不胜感激。
Response1(单个文档):-
{
"irpage":[
{
"drawer":"HPPS",
"folderNumber":"HPA00008047642",
"docID":"1",
"pageNumber":"1",
"din":"HPPSHPA00008047642000001",
"userKey1":"20151119NJ",
"docType":"APPD",
"docDate":"20151119",
"numberPages":"1",
"fileName":"_HPPS151119_Z000\SCHEDL22490010845",
"tempFileName":"\prcins.net\Shared\irtestnjimages01_HPPS151119_Z000\SCHEDL22490010845.pdf",
"driver":"",
"dateCaptured":"20151119",
"timeCaptured":"08:45:04",
"singleInd":"S",
"userID":"SCHEDL2",
"status":"U",
"batch":"Z000",
"format":"PDF",
"media":"D",
"orientation":"0",
"tempDin":"12201511190845952490845SCHEDL2",
"transType":"APPD",
"operator":"",
"userkey2":"0",
"reason":"Computer Generated Document",
"archiveStatus":"A",
"archiveDate":"20151119",
"deviceID":"1",
"packageID":"1",
"packageType":"15007",
"markedInd":"0",
"dspPageNumber":"1",
"aMedia":"",
"aDrive":"",
"description":"Output",
"folderName":"GAIL BARTLING",
"docDescription":"Application Document",
"overlayID":null,
"docIndex":null
}
]
}
Response2(多个文档)
{
"irpage":[
{
"drawer":"HPPS",
"folderNumber":"HPA00008047642",
"docID":"1",
"pageNumber":"1",
"din":"HPPSHPA00008047642000001",
"userKey1":"20151119NJ",
"docType":"APPD",
"docDate":"20151119",
"numberPages":"1",
"fileName":"_HPPS151119_Z000\SCHEDL22490010845",
"tempFileName":"\prcins.net\Shared\irtestnjimages01_HPPS151119_Z000\SCHEDL22490010845.pdf",
"driver":"",
"dateCaptured":"20151119",
"timeCaptured":"08:45:04",
"singleInd":"S",
"userID":"SCHEDL2",
"status":"U",
"batch":"Z000",
"format":"PDF",
"media":"D",
"orientation":"0",
"tempDin":"12201511190845952490845SCHEDL2",
"transType":"APPD",
"operator":"",
"userkey2":"0",
"reason":"Computer Generated Document",
"archiveStatus":"A",
"archiveDate":"20151119",
"deviceID":"1",
"packageID":"1",
"packageType":"15007",
"markedInd":"0",
"dspPageNumber":"1",
"aMedia":"",
"aDrive":"",
"description":"Output",
"folderName":"GAIL BARTLING",
"docDescription":"Application Document",
"overlayID":null,
"docIndex":null
},
{
"drawer":"HPPS",
"folderNumber":"HPA00008047642",
"docID":"4",
"pageNumber":"1",
"din":"HPPSHPA00008047642000004",
"userKey1":"20160104NJ",
"docType":"FINA",
"docDate":"20160104",
"numberPages":"1",
"fileName":"_HPPS160105_Z000\SCHEDL28070010819",
"tempFileName":"\prcins.net\Shared\irtestnjimages01_HPPS160105_Z000\SCHEDL28070010819.pdf",
"driver":"",
"dateCaptured":"20160105",
"timeCaptured":"08:19:30",
"singleInd":"S",
"userID":"SCHEDL2",
"status":"U",
"batch":"Z000",
"format":"PDF",
"media":"D",
"orientation":"0",
"tempDin":"12201601050819308070819SCHEDL2",
"transType":"FINA",
"operator":"",
"userkey2":"0",
"reason":"Computer Generated Document",
"archiveStatus":"A",
"archiveDate":"20160105",
"deviceID":"1",
"packageID":"4",
"packageType":"15007",
"markedInd":"0",
"dspPageNumber":"1",
"aMedia":"",
"aDrive":"",
"description":"Output",
"folderName":"GAIL BARTLING",
"docDescription":"Final Notice of Cancellation",
"overlayID":null,
"docIndex":null
}
]
}
我会这样解决
Gson gson = new GsonBuilder().create();
responseObject = gson.fromJson(jsonString, MyClass.class);
我的班级
public class MyClass {
List<ArrayEntry> irpage;
public class ArrayEntry {
String drawer;
String folderNumber;
...
}
}
使用您需要的修饰符(public/private)
Gson 的 Maven 依赖项
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.4</version>
</dependency>
我有一个 Rest 模板交换以获得服务。服务 returns 响应如下:
响应 1(单个文档):- { "irpage":[{ "drawer": "HPPS", "folderNumber": "HPA00008047642", "docID": "1", "pageNumber": "1", "din": "HPPSHPA00008047642000001", "userKey1": "20151119NJ", "docType": "APPD", "docDate": "20151119", "numberPages": "1", "fileName": "_HPPS151119_Z000\SCHEDL22490010845", "tempFileName": "\\prcins.net\Shared\irtestnjimages01_HPPS151119_Z000\SCHEDL22490010845.pdf", "driver": "", "dateCaptured": "20151119", "timeCaptured": "08:45:04", "singleInd": "S", "userID": "SCHEDL2", "status": "U", "batch": "Z000", "format": "PDF", "media": "D", "orientation": "0", "tempDin": "12201511190845952490845SCHEDL2", "transType": "APPD", "operator": "", "userkey2": "0", "reason": "Computer Generated Document", "archiveStatus": "A", "archiveDate": "20151119", "deviceID": "1", "packageID": "1", "packageType": "15007", "markedInd": "0", "dspPageNumber": "1", "aMedia": "", "aDrive": "", "description": "Output", "folderName": "GAIL BARTLING", "docDescription": "Application Document", "overlayID":空, "docIndex": 空 }] }
响应 2(多个文档): { "irpage":[{ "drawer": "HPPS", "folderNumber": "HPA00008047642", "docID": "1", "pageNumber": "1", "din": "HPPSHPA00008047642000001", "userKey1": "20151119NJ", "docType": "APPD", "docDate": "20151119", "numberPages": "1", "fileName": "_HPPS151119_Z000\SCHEDL22490010845", "tempFileName": "\\prcins.net\Shared\irtestnjimages01_HPPS151119_Z000\SCHEDL22490010845.pdf", "driver": "", "dateCaptured": "20151119", "timeCaptured": "08:45:04", "singleInd": "S", "userID": "SCHEDL2", "status": "U", "batch": "Z000", "format": "PDF", "media": "D", "orientation": "0", "tempDin": "12201511190845952490845SCHEDL2", "transType": "APPD", "operator": "", "userkey2": "0", "reason": "Computer Generated Document", "archiveStatus": "A", "archiveDate": "20151119", "deviceID": "1", "packageID": "1", "packageType": "15007", "markedInd": "0", "dspPageNumber": "1", "aMedia": "", "aDrive": "", "description": "Output", "folderName": "GAIL BARTLING", "docDescription": "Application Document", "overlayID":空, "docIndex": 空 }, { "drawer": "HPPS", "folderNumber": "HPA00008047642", "docID": "4", "pageNumber": "1", "din": "HPPSHPA00008047642000004", "userKey1": "20160104NJ", "docType": "FINA", "docDate": "20160104", "numberPages": "1", "fileName": "_HPPS160105_Z000\SCHEDL28070010819", "tempFileName": "\\prcins.net\Shared\irtestnjimages01_HPPS160105_Z000\SCHEDL28070010819.pdf", "driver": "", "dateCaptured": "20160105", "timeCaptured": "08:19:30", "singleInd": "S", "userID": "SCHEDL2", "status": "U", "batch": "Z000", "format": "PDF", "media": "D", "orientation": "0", "tempDin": "12201601050819308070819SCHEDL2", "transType": "FINA", "operator": "", "userkey2": "0", "reason": "Computer Generated Document", "archiveStatus": "A", "archiveDate": "20160105", "deviceID": "1", "packageID": "4", "packageType": "15007", "markedInd": "0", "dspPageNumber": "1", "aMedia": "", "aDrive": "", "description": "Output", "folderName": "GAIL BARTLING", "docDescription": "Final Notice of Cancellation", "overlayID":空, "docIndex": 空 }] }
当我提供 Class < E > 目标Class 作为 new HashMap< String, List< Map < String , String>>>().getClass() Response2 得到解析,我在 Map 中得到结果,但是 response1(Single Document) 不起作用并且 returns 为空。
或者如果我提供 Class < E > 目标 Class 作为 new HashMap< String , Map < String, String >>().getClass() Response1 得到解析,我在 Map 中得到结果,但是 response2(Multiple Documents) 不起作用并且 returns 为 null .
我不确定如何处理和解析来自服务的两个响应?
responseMap = restUtils.findDocuments(urlBuilder.build(),new HashMap<String,List<Map<String,String>>>().getClass());
**RestUtils Class:**
public <E> E findDocuments(String url,Class<E> targetClass) throws JsonProcessingException {
MultiValueMap<String, String> headers = new LinkedMultiValueMap<String, String>();
headers.add(ACCEPT, MediaType.APPLICATION_JSON_VALUE);
headers.add(CONTENT_TYPE,MediaType.APPLICATION_JSON_VALUE);
//headers.add("id", StringUtils.trimToEmpty(policyNo));
HttpEntity<Object> requestEntity = new HttpEntity<Object>(headers);
ResponseEntity<E> response = restTemplate.exchange(url,HttpMethod.GET, requestEntity, targetClass);
ObjectMapper mapper = new ObjectMapper();
String jsonResponse = mapper.writeValueAsString(response);
System.out.println(jsonResponse);
return (E) response.getBody();
}
如有任何帮助,我们将不胜感激。
Response1(单个文档):-
{
"irpage":[
{
"drawer":"HPPS",
"folderNumber":"HPA00008047642",
"docID":"1",
"pageNumber":"1",
"din":"HPPSHPA00008047642000001",
"userKey1":"20151119NJ",
"docType":"APPD",
"docDate":"20151119",
"numberPages":"1",
"fileName":"_HPPS151119_Z000\SCHEDL22490010845",
"tempFileName":"\prcins.net\Shared\irtestnjimages01_HPPS151119_Z000\SCHEDL22490010845.pdf",
"driver":"",
"dateCaptured":"20151119",
"timeCaptured":"08:45:04",
"singleInd":"S",
"userID":"SCHEDL2",
"status":"U",
"batch":"Z000",
"format":"PDF",
"media":"D",
"orientation":"0",
"tempDin":"12201511190845952490845SCHEDL2",
"transType":"APPD",
"operator":"",
"userkey2":"0",
"reason":"Computer Generated Document",
"archiveStatus":"A",
"archiveDate":"20151119",
"deviceID":"1",
"packageID":"1",
"packageType":"15007",
"markedInd":"0",
"dspPageNumber":"1",
"aMedia":"",
"aDrive":"",
"description":"Output",
"folderName":"GAIL BARTLING",
"docDescription":"Application Document",
"overlayID":null,
"docIndex":null
}
]
}
Response2(多个文档)
{
"irpage":[
{
"drawer":"HPPS",
"folderNumber":"HPA00008047642",
"docID":"1",
"pageNumber":"1",
"din":"HPPSHPA00008047642000001",
"userKey1":"20151119NJ",
"docType":"APPD",
"docDate":"20151119",
"numberPages":"1",
"fileName":"_HPPS151119_Z000\SCHEDL22490010845",
"tempFileName":"\prcins.net\Shared\irtestnjimages01_HPPS151119_Z000\SCHEDL22490010845.pdf",
"driver":"",
"dateCaptured":"20151119",
"timeCaptured":"08:45:04",
"singleInd":"S",
"userID":"SCHEDL2",
"status":"U",
"batch":"Z000",
"format":"PDF",
"media":"D",
"orientation":"0",
"tempDin":"12201511190845952490845SCHEDL2",
"transType":"APPD",
"operator":"",
"userkey2":"0",
"reason":"Computer Generated Document",
"archiveStatus":"A",
"archiveDate":"20151119",
"deviceID":"1",
"packageID":"1",
"packageType":"15007",
"markedInd":"0",
"dspPageNumber":"1",
"aMedia":"",
"aDrive":"",
"description":"Output",
"folderName":"GAIL BARTLING",
"docDescription":"Application Document",
"overlayID":null,
"docIndex":null
},
{
"drawer":"HPPS",
"folderNumber":"HPA00008047642",
"docID":"4",
"pageNumber":"1",
"din":"HPPSHPA00008047642000004",
"userKey1":"20160104NJ",
"docType":"FINA",
"docDate":"20160104",
"numberPages":"1",
"fileName":"_HPPS160105_Z000\SCHEDL28070010819",
"tempFileName":"\prcins.net\Shared\irtestnjimages01_HPPS160105_Z000\SCHEDL28070010819.pdf",
"driver":"",
"dateCaptured":"20160105",
"timeCaptured":"08:19:30",
"singleInd":"S",
"userID":"SCHEDL2",
"status":"U",
"batch":"Z000",
"format":"PDF",
"media":"D",
"orientation":"0",
"tempDin":"12201601050819308070819SCHEDL2",
"transType":"FINA",
"operator":"",
"userkey2":"0",
"reason":"Computer Generated Document",
"archiveStatus":"A",
"archiveDate":"20160105",
"deviceID":"1",
"packageID":"4",
"packageType":"15007",
"markedInd":"0",
"dspPageNumber":"1",
"aMedia":"",
"aDrive":"",
"description":"Output",
"folderName":"GAIL BARTLING",
"docDescription":"Final Notice of Cancellation",
"overlayID":null,
"docIndex":null
}
]
}
我会这样解决
Gson gson = new GsonBuilder().create();
responseObject = gson.fromJson(jsonString, MyClass.class);
我的班级
public class MyClass {
List<ArrayEntry> irpage;
public class ArrayEntry {
String drawer;
String folderNumber;
...
}
}
使用您需要的修饰符(public/private)
Gson 的 Maven 依赖项
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.4</version>
</dependency>