简体   繁体   中英

Java map object, which contains JSON string fields to string

I have faced problem, while mapping my object to JSON.

I have an object, which I need to convert to propper JSON, but some of my object's String fields are already in JSON format:

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"));

For JSON mapping I am using ObjectMapper:

public String toJsonString() {
    ObjectMapper mapper = new ObjectMapper();
    try {
        return mapper.writeValueAsString(this);
    } catch (JsonProcessingException e) {
        logger.error(e.getMessage());
    }
    return toString();
}

However, ObjectMapper fails to map Strings, that already contains JSON correctly, and after mapping I get this type of JSON:

{  
   "event_info":""{\"chargeableDur\":0}",
   "location_area":"location_area",
   "agent_info":"{\"scp\":\"NAVI\",\"stack\":\"CAP2\"}",
   "service_info":""{\"bcap\":\"8090A3\",\"balID\":55969859}",
   "starttime":"starttime"
}

I want ObjectMapper to map my object like that:

{  
   "event_info":{  
      "chargeableDur":0
   },
   "location_area":"location_area",
   "agent_info":{  
      "scp":"NAVI",
      "stack":"CAP2"
   },
   "service_info":{  
      "bcap":"8090A3",
      "balID":55969859
   },
   "starttime":"starttime"
}

Seems that your json result is stringified. Try to put the string result in separate JSONObject as

return new JSONObject(mapper.writeValueAsString(this)).toString();

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM