2017-08-02 117 views
0

我遇到了问题,同时将我的对象映射到JSON。Java地图对象,其中包含要字符串的JSON字符串字段

我有一个对象,我需要转换为propper 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" 
} 
+0

因此,您想对字符串进行JSON化,并让JSON已经像原来一样?有什么办法可以知道哪一个已经是json? – Nathan

+0

'mapper.writeValueAsString(this);'使用类的每个属性的'getX()'方法将它们放入JSon中?如果是这样,只要重新定义这些方法,以便在没有JSon格式时返回它们。 – Asew

+0

如果您将这些字符串更改为它们的字节数组实现,并将反序列化将它们还原为字符串,那该怎么办? –

回答

0

看来你的JSON结果字符串化。尝试把字符串结果放在单独的JSONObject中,因为

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