REST:如何使json更简洁

时间:2011-12-25 11:31:03

标签: java json rest

当开发一个安静的网址时,json是一个有用的mediatype ...但是这些天我的问题很困难,我将实体模型类直接转换为json字符串并将它们放入响应中......但是许多实体模型都有一个与其他模型有许多,多对一的关系......例如:

class Model{
....
List<model2> model2s;
}
class Model2{
...
List<Model3> model3s;
}
...

我将一个Model实例转换为json字符串...这个json字符串的长度应该是可怕的...如何避免这个...谢谢

2 个答案:

答案 0 :(得分:0)

除非您决定根据某些逻辑选择性地返回数据,否则您无法做到。想象一下,将它作为xml返回,它会更加“可怕”吗?还是我完全错过了你的问题?

另一方面。为什么你会担心结果JSON的复杂性。无论如何都会自动解析(通过JavaScript或Web服务的客户端)。

如果数据大小是您的最大问题,您可以做的是压缩您的回复。

答案 1 :(得分:0)

JSON的大小是一个有效的问题,特别是如果JSON正在由具有慢速(错)javascript引擎(例如旧IE)的浏览器中运行的javascript解析/使用。即使数据是通过线路压缩的,也只会影响传输。仍然必须在浏览器中解析完整的消息。

一些规则/建议:

首先,减少数据量 - 仅发送接收应用程序所需的数据。在您的情况下,具体而言,过滤掉消费应用程序不需要查看的model2smodel3s的任何实例。

如果无法过滤掉实例,则减少每个实例中的数据量 - 不要将每个字段编码为JSON。例如,如果model2s有四个字段:namedatesummaryauthor,则客户端应用程序只需要name和{ {1}},然后只发送datename

最后,从数据中删除冗余。如果数据被非规范化,并且date具有正确属于Model2的数据副本(例如),则仅发送具有Model表示的数据。同样,如果ModelModel2之间的关系是多对多关系,则只发送Model3数据的单个实例,并实现参考方案(例如YAML)副本。