【问题标题】:how do i format restful webservice json output so each json object starts on a new line?如何格式化 restful webservice json 输出,以便每个 json 对象从新行开始?
【发布时间】:2014-03-21 21:36:46
【问题描述】:

由于某种原因,我的一个@GET 方法会自动以以下格式输出我的 JSON 数据,而这两个实现完全相同。我希望我的其他 @GET 方法的格式与下面显示的输出完全相同。

获取所有医生代码:

@Path("/doctors")
@GET
@Produces(MediaType.APPLICATION_JSON)
public List<Doctor> getAllDoctors() throws Exception{
    return dao.getAllDoctors();
}

获取所有患者代码:

@Path("/patients")
@GET
@Produces(MediaType.APPLICATION_JSON)
public List<Patient> getAllPatients() throws Exception{
    return dao.getAllPatients();
}

统一输出:

[{"specialty":"surgeon","sex":"male","experience":4,"salary":23232.66,"id":3,"firstName":"kobe","lastName":"bryant"},
{"specialty":"surgeon","sex":"male","experience":4,"salary":23232.66,"id":33,"firstName":"D","lastName":"bryant"},
{"specialty":"eyebrows","sex":"female","experience":1,"salary":1.0,"id":2,"firstName":"joan","lastName":"smith"},
{"specialty":"eyebrows","sex":"female","experience":1,"salary":1.0,"id":69,"firstName":"joan","lastName":"smith"}]

【问题讨论】:

  • 你为什么要那个? JSON 是 JSON。它应该由计算机读取,而不是由人类读取。那你为什么在乎?如果真的需要,为什么不在客户端格式化它?
  • 我想它只是更容易阅读,而且这是一个相对较小的程序,所以看起来更好看。你能解释一下为什么我的程序会这样做吗?我的“getALLDoctors()”方法将每个 JSON 对象输出到新行,但我的第二个 @GET 方法输出随机聚集在一起的所有内容。虽然这两种方法都运行良好,但从两个相同实现的方法中看到两个不同的结果只是很烦人。

标签: java json web-services rest jersey


【解决方案1】:

有几种方法可以做到这一点:

  • 在 ResponseFilter 中全局:

这个想法是覆盖响应内容主体并使其在那里漂亮。 请记住 Jersey 在内部使用 Jackson 序列化您的对象。

  • 直接在课堂上:

您必须将 REST 方法的签名更改为响应类型。然后,您将通过 Jackson 使用 ObjectMapper 手动序列化您的对象。

拥有 Json Obecjt 后要做的步骤是美化它。 JacksonUtils 有一种方法可以做到这一点。

我建议你添加一个查询字符串,以便知道你是否想要一个漂亮的输出。那会更合适。

如果您需要更详细的答案,请告诉我。

希望对你有帮助,

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-10-17
    • 2018-04-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-18
    • 1970-01-01
    相关资源
    最近更新 更多