2017-08-02 113 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();