public String convertToJson(List<MyModelDTO> modelDTO) {
com.fasterxml.jackson.databind.ObjectMapper mapper = new ObjectMapper();
try {
return mapper.writeValueAsString(modelDTO);
} catch (JsonGenerationException ex) {
ex.printStackTrace();
} catch (JsonMappingException ex) {
ex.printStackTrace();
} catch (IOException ex) {
ex.printStackTrace();
}
return null;
}
public Model getDefinition(ModelDTO modelDTO) {
JsonAjaxModel jsonAjaxModel=new JsonAjaxModel();
//resultMap is a map to initialise the JSON
org.json.JSONObject modelStepsJson=new JSONObject(resultMap);
org.json.JSONObject jsonObj=new JSONObject();
jsonObj.put("MODELLING_STEPS", modelStepsJson);
List<MyModelDTO> methodModelList=myDAO.getSavedsteps(MyModelDTO.getModelId());
jsonObj.put("STEPS", convertToJson(methodModelList));
jsonAjaxModel.setJsonString(jsonObj.toString());
return jsonAjaxModel;
}
如上所示,我正在使用带有org.json.JSONObject的JackSon API。问题是生成的最终JSON字符串中包含'\',这在JavaScript中使用eval时会出错。
{"MODELLING_STEPS":{
"1":"Data Set,UOM and modelling methodology Selection",
"2":"Loss Data Frequency modelling"},
"STEPS":"[
{\\\"stitchingModelId\\\":200844,\\\"modellingStepId\\\":1},
{\\\"stitchingModelId\\\":200844,\\\"modellingStepId\\\":2}
]
请注意,我不能使用org.json.simple.JSONObject.escape()方法,因为我的项目不允许这样做。
希望问题很清楚。请告诉我如何逃避'\'?
答案 0 :(得分:1)
我建议不要将jsonObj对象转换为String对象。因此要更换一行:
jsonAjaxModel.setJsonString(jsonObj.toString ())
通过以下函数:
jsonAjaxModel.setJsonObj(jsonObj);