一起使用org.json.JSONObject和JackSon API

时间:2016-01-05 11:14:45

标签: jackson jsonobject

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()方法,因为我的项目不允许这样做。

希望问题很清楚。请告诉我如何逃避'\'?

1 个答案:

答案 0 :(得分:1)

我建议不要将jsonObj对象转换为String对象。因此要更换一行:

jsonAjaxModel.setJsonString(jsonObj.toString ()) 

通过以下函数:

jsonAjaxModel.setJsonObj(jsonObj);