我在使用返回JSON字符串的API时遇到了一个问题.try 将JSON字符串响应从API转换为Map<;字符串、对象>;时,会抛出错误.但是,当我手动将相同的JSON字符串响应嵌入到我的代码中并执行到Map<;字符串、对象>;的转换时,它可以无缝地工作.事实证明,理解这种行为对我来说是相当具有挑战性的
错误:
上下文初始化期间遇到异常-正在取消刷新try :org.springframework.beans.factory.BeanCreationException:创建名为""TestService""的Bean时出错:调用init方法失败;嵌套异常为Java."异常:com.fasterxml.jackson.databind.exc.MismatchedInputException:无法构造java.util.LinkedHashMap
的实例(尽管至少存在一个创建器):没有要从字符串值(‘{’)反序列化的字符串参数构造函数/工厂方法"
At[来源:(字符串)""{"DXX":{"NX":"XXDHX XXK XIMIXED","XXXX":"X00165401java.util.LinkedHashMap
0000087","NXme1":"XINHX","XXhmID":"16401","XXhmNXme":"MXXXEXXXXD WXXXD","INXXXX":"1","XXXNXMe":"XXXIVE","XXXXhgDX":"00000000","XpeXXXXMXX":"XYX","DXXXXXXMX":"00000000","XvXXXXg":"i","XvXXXXXGXMe":"INDIVIDUXX,""XXXDiXXXXg":"N","XXXDiXXXXXDX":"00000000","XXXDiXXXXXX":"00000000000000000000000000000000000000000000000000000000000000000000000000000000000","XXkMXde":"P","DeXqMXde":"P","HighXedeemXmX":"0","HighXedeemPXX":"0","XXXXXXhVXX":"0","XXdPXXEXXND":"200","XXdPXXXXXnuX":"0","XXdPXXXXXnuX":"0","[截断1399个字符];行:1,列:1]
JSON字符串:
{
"DXX": {
"NX": "XXDHX XXK XIMIXED",
"XXXX": "X001654011000000087",
"NXme1": "XINHX",
"XXhmId": "16401",
"XXhmNXme": "MXXXEXXXXD WXXXD",
"InXXXX": "1",
"XXXNXme": "XXXIVE",
"XXXXhgDX": "00000000",
"XpeXXXXMXinX": "XYX",
"DXXXXMXinX": "00000000",
"XvXXXg": "I",
"XvXXXgNXme": "INDIVIDUXX",
"XuXXDiXXXXg": "N",
"XuXXDiXXXXXDX": "00000000",
"XuXXDiXXXXXX": "0000000000000000000000000",
"XXkMXde": "P",
"DeXqMXde": "P",
"HighXedeemXmX": "0",
"HighXedeemPXX": "0",
"XXXXXhVXX": "0",
"XXdPXXEXXnd": "70610",
"XXdPXXXXughX": "0",
"XXdPXXXnuX": "0",
"XXdPXXXedeemed": "967",
"XXdPXXXXXed": "0",
"XXdPXXExpiXed": "0",
"XXdPXXXdjIn": "10000",
"XXdPXXXdjXuX": "0",
"GXXXeXXd": "0",
"XyXXXDXXXX": "10198",
"XXdXpndEXXnd": "0",
"YXdXpendEXXnd": "0",
"XiXeXXDXXXX": "79643",
"PXPXXXNXXXXd": "0",
"XpenXXXedXnXXX": "79643",
"XXmXMXhXXeq": "1",
"XXmXDXyXXMXh": "15",
"XXXXXmXDX": "20231215",
"NexXXXmXDX": "20240115",
"DXXpened": "20231204",
"DiXXPkXPXX": "0",
"DiXXPkXMXnVXXPXX": "0",
"XuXXDiXXXXeq": "0",
"XuXXDiXXDXyXXMXh": "0",
"XXXXDiXXuXXeDX": "00000000",
"XuXXDiXXXhXeXhXd": "0",
"XuXXDiXXMXnVXX": "0",
"WXiveMemXXee": "N",
"XXXpnDX": "2023338",
"XeXXXeXmX": "0",
"XuXXNXd": "2",
"PeXIXemNXd": "0",
"PXXXXXeNXd": "7",
"XnXXyXd": "IND",
"XuXXXd": "356",
"NXXMXhDXXXXXuX": "1",
"MXnXhXyXXXhXXXkGXXup": [
{
"DiXXXmX": "0",
"DiXXMXhDX": "20231215"
},
{
"DiXXXmX": "0",
"DiXXMXhDX": "00000000"
},
{
"DiXXXmX": "0",
"DiXXMXhDX": "00000000"
},
{
"DiXXXmX": "0",
"DiXXMXhDX": "00000000"
},
{
"DiXXXmX": "0",
"DiXXMXhDX": "00000000"
},
{
"DiXXXmX": "0",
"DiXXMXhDX": "00000000"
},
{
"DiXXXmX": "0",
"DiXXMXhDX": "00000000"
},
{
"DiXXXmX": "0",
"DiXXMXhDX": "00000000"
},
{
"DiXXXmX": "0",
"DiXXMXhDX": "00000000"
},
{
"DiXXXmX": "0",
"DiXXMXhDX": "00000000"
},
{
"DiXXXmX": "0",
"DiXXMXhDX": "00000000"
},
{
"DiXXXmX": "0",
"DiXXMXhDX": "00000000"
}
],
"XXXXXpenXniDXXe": "20241204",
"XXdDiXXXXXhXXXk": "0",
"XXdXpendXmX": "0"
}
}
代码:
HttpHeaders headers = new HttpHeaders();
RestTemplate restTemplate = new RestTemplate();
headers.setContentType(MediaType.APPLICATION_JSON);
headers.setAccept(Collections.singletonList(MediaType.ALL));
headers.add("api_key","qwerqwersadfaf");
headers.add("x-session-id","asdfasdf");
headers.add("x-user-id","asdfasdfas");
headers.add("x-message-id","asdfasdfas");
String bodyTopost = "{\"Data\": {\"Account\": \"SAMPLEaccount\",\"Schm\": \"168401\"}}";
HttpEntity<String> entity = new HttpEntity<String>(bodyTopost, headers);
ParameterizedTypeReference<String> parameterizedTypeReference = new ParameterizedTypeReference<String>() {
};
String inputUrl = "https://api.testbank.co.in/cons/abcd/v1";
try {
ResponseEntity<String> result = restTemplate.exchange(inputUrl, HttpMethod.POST, entity, parameterizedTypeReference);
if (result.getStatusCode().is2xxSuccessful()) {
if (result.getBody() != null) {
String resultBody = result.getBody().replace("\\", "");
logger.info("Response value is {}", resultBody);
ObjectMapper mapper = new ObjectMapper();
Map<String, Object> map = mapper.readValue(resultBody, Map.class);
return map;
} else {
logger.info("Payload is null");
return null;
}
} else {
logger.info("Failed to execute api");
return null;
}
} catch (ResourceAccessException e) {
logger.info("Resource Erro {} ", e);
return null;
} catch (RestClientException e) {
logger.info("Rest Error Erro {} ", e);
return null;
} catch (JsonMappingException e) {
throw new RuntimeException(e);
} catch (JsonProcessingException e) {
throw new RuntimeException(e);
}
try 将JSON字符串响应从API转换为Map<;字符串、对象>;时,会抛出错误.但是,当我手动将相同的JSON字符串响应嵌入到我的代码中并执行到Map<;字符串、对象>;的转换时,它可以无缝地工作.
字符串数据="{"DXX":{"NX":"XXDHX XXK XIMIXED","XXXX":"X001654011000000087","NXme1":"XINHX","XXhmID":"16401","XXhmNXme":"MXXXEXXD WXXXD","INXXXX":"1","XXXXXNXME":"00000000","XpeXXXXMsinX":"XYX","DXXXXMsinX":"00000000","XvXXXXXg":""i","XvXXXXgNXme":"INDIVIDUXX","XXXXxxxxg:""N","XXXXXXXXXXX:""N,XXXXX""xxxdiXXXXXDX":"00000000","xxxdiXXXXXX":"00000000000000000000000000000000000000000000000000000000000000000","XXkMXde":"P","DeXqMXde":"P","HighXedeemXmX":"0","HighXedeemPXX":"0","XXXXXhVXX":"0","XXXXXhVXX":"0","XXdPXXEXXND":"200","XXdPXXXXughX":"0","XXdPXXXnuX:"0","XXdXXPXXXeSeam:"2","XXdPXXXXXed":"0","XXdPXXExpixXed":"0","XXdPXXXxjin:""10000","XXdPXXXxjin""XXdPXXXdjXxX":"0","GXXXeXXd":"0","XyXXXDXXXX":"10198","XXdXpndEXXnd":"0","XXdPXXEXXnd":"70610","XXdPXXXXughX":"0","XXdPXXXnuX":"0","XXdPXXXnuX":"0","XXdPXXXXXed":"0","XXdPXXExpiXed":"0","XXdPXXXdjIn":"10000","XXdPXXXdjX":"0","YXxxxPxxnd":"0","GXXXxed":"0,""xiXeXXDXXXX":"79643","PXPXXXNXXXXd":"0","XpenXXXedXnXXX":"79643","XXmXMXhXXeq":"1","XXmXDXyXXMXh":"15","XXXXmXDX":"20231215","NexXXXmXDX":"20240115","DXXpen":"20231204","DiXXPkxxxPXX":"0","DiXXPkXMXnVXXPXX":"0","xXXXXDiXXXXDXyXXMXh":"0","XXXXXXDixxxxeDX":"00000000","xxXXxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxdx,xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx,xxxxxxxxxx,xxxxxxxxxx:",xxxxxxxxxx,xxxxxxxx,xxxxxxxxx,xxxxxxx"徐XXDiXXMXnVXX":"0","WxiveMemXXee":"N","XXXpnDX":"2023338","XeXXXeXmX":"0","徐XXNXd":"2","PeXIXemNXd":"0","PXXXXXeNXd":"7","XnXXyXd":"IND","徐XXXd":"356","NXXMXhDXXXXXX":"1","MXnXXhxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx:[{""DiXXxxmx":"0",""DiXXMXhdx"":"20231215","""DiXXMXhDX":"00000000"},{"DiXXXmX":"0","DiXXMXhDX":"00000000"},{"DiXXXmX":"0","DiXXMXhDX":"00000000"},{"DiXXXmX":"0","DiXXMXhDX":"00000000"}],"XXXXXpenXniDXXe":"20241204","XXdDiXXXXXhXXXk":"0","XXdXPendXmX":"0"}";
对象映射器映射器=新对象映射器(); Map<;字符串,对象>;map=mapper.readValue(data,Map.class);
当我直接将API的响应转换为Map String,Object时,>