繁体   English   中英

杰克逊将多个对象序列化为一个

[英]Jackson serialize multiple objects into one

我有一个Ajax调用来从Hibernate Objects填充前端的多个字段。 这就是为什么我想从Spring返回多个Java Hibernate到Json序列化对象到Ajax。 目前我这样做:

  @RequestMapping(method=RequestMethod.GET)
  @ResponseBody
  public String getJson()
  {
     List<TableObject> result = serviceTableObject.getTableObject(pk);
     String json = "";
     ObjectWriter ow = new ObjectMapper().writer().withDefaultPrettyPrinter();
     try
     {
       json = ow.writeValueAsString(result);
     } catch (JsonGenerationException e)
     {
       // TODO Auto-generated catch block
       e.printStackTrace();
     } catch (JsonMappingException e)
     {
       // TODO Auto-generated catch block
       e.printStackTrace();
     } catch (IOException e)
     {
       // TODO Auto-generated catch block
       e.printStackTrace();
     }
     return json;
  }

这工作正常并返回一个json对象到ajax但我有多个这样的对象所以我想要的是将所有这些对象嵌套在一个json对象中并将后者返回到我的ajax,这样我就可以使用一个对象填充所有字段而不是制作多个ajax调用我需要的每个对象。 所以例如我会有类似的东西:

 List<TableObject> result = serviceTableObject.getTableObject(pk);
     String json = "";
     ObjectWriter ow = new ObjectMapper().writer().withDefaultPrettyPrinter();
json = ow.writeValueAsString(result);


   List<SecondObject> secondObject = serviceSecondObject.getSecondObject(pk);
     String json2 = "";
     ObjectWriter ow = new ObjectMapper().writer().withDefaultPrettyPrinter();
json2 = ow.writeValueAsString(secondObject );

  NewJsonObject.add(json)
  NewJsonObject.add(json2)

  return newJsonObject;

您应该能够使用Map(因为JSON对象与Map不同)来保存对象:

@RequestMapping(method=RequestMethod.GET)
@ResponseBody
public String getJson() {
    Map<String, Object> theMap = new LinkedHashMap<>();
    // if you don't care about order just use a regular HashMap

    // put your objects in the Map with their names as keys
    theMap.put("someObject", someModelObject);

    // write the map using your code
    ObjectWriter ow = new ObjectMapper().writer().withDefaultPrettyPrinter();

    return ow.writeValueAsString(theMap);
}

您现在可以访问JS中Map中的所有对象,因为Map将被序列化为JSON-Object:

response.someObject == { // JSON Serialization of someModelObject }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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