Я столкнулся с проблемой при сопоставлении моего объекта с JSON.
У меня есть объект, который мне нужно преобразовать в правильный JSON, но некоторые из строковых полей моего объекта уже имеют формат JSON:
Sdr sdr = new Sdr();
sdr.setLocation_area(("location_area"));
sdr.setEvent_info(("{\"chargeableDur\":0}"));
sdr.setAgent_info("{\"scp\":\"NAVI\",\"stack\":\"CAP2\"}");
sdr.setService_info(("{\"bcap\":\"8090A3\",\"balID\":55969859}"));
sdr.setStarttime(("starttime"));
Для сопоставления JSON я использую ObjectMapper:
public String toJsonString() {
ObjectMapper mapper = new ObjectMapper();
try {
return mapper.writeValueAsString(this);
} catch (JsonProcessingException e) {
logger.error(e.getMessage());
}
return toString();
}
Однако ObjectMapper не может правильно сопоставить строки, которые уже содержат JSON, и после сопоставления я получаю этот тип JSON:
{
"event_info":""{\"chargeableDur\":0}",
"location_area":"location_area",
"agent_info":"{\"scp\":\"NAVI\",\"stack\":\"CAP2\"}",
"service_info":""{\"bcap\":\"8090A3\",\"balID\":55969859}",
"starttime":"starttime"
}
Я хочу, чтобы ObjectMapper отображал мой объект следующим образом:
{
"event_info":{
"chargeableDur":0
},
"location_area":"location_area",
"agent_info":{
"scp":"NAVI",
"stack":"CAP2"
},
"service_info":{
"bcap":"8090A3",
"balID":55969859
},
"starttime":"starttime"
}
mapper.writeValueAsString(this);
использует методgetX()
каждого атрибута вашего класса, чтобы поместить их в JSon? Если это так, просто переопределите эти методы, чтобы они возвращали их без формата JSon, если он у них есть. - person Asew   schedule 02.08.2017