首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在HTTP客户端库中返回JSON?

如何在HTTP客户端库中返回JSON?
EN

Stack Overflow用户
提问于 2017-06-24 13:37:00
回答 1查看 113关注 0票数 0

我希望创建一个库,它将执行身份验证工作(沿请求发送一些身份验证参数),并从API返回json响应。JSON通常表示一系列字典,如下所示:

代码语言:javascript
复制
[
  {"a": 1, "b": 2},
  {"a": 3, "b": 1}
]

我在Python中也做过同样的事情,而且没有什么问题,我只是返回了一个dict,它是Python中内置的。

我想知道在Java中最好的方法是什么?以下是我认为的一些方法:

  1. 返回将由用户处理的流。具体来说,我使用java.net.HttpURLConnection,通过这种方法,我将返回将由用户处理的connection.getInputStream()。这种方法的缺点是用户需要完成大部分工作(读取流并将其转换为类似于json的对象或其他东西)。更好的是,用户将能够灵活地以他们喜欢的任何方式处理它,使用第三方json库或其他东西从类中创建自定义对象。通过这种方法,我不会强迫他们使用某些库,因为整个代码将使用Java内置功能。
  2. 使用第三方库,如org.jsonGSON,并返回此类对象。这里的缺点是,我将强制用户使用第三方库。
  3. 我可以为每种对象定义类,可能有5-6种类型的类。缺点是:我需要更多的时间来实现解决方案,并迫使用户使用我的对象。

困扰我的是Python开发人员经常使用dict,而在Java中,开发人员最喜欢使用特定用户定义类的对象。所以,我不能断定什么是最合适的方法。

EN

回答 1

Stack Overflow用户

发布于 2017-06-24 21:04:19

HTTP的任何端点都有一个定义的响应结构(或者至少应该这样)。库实现的方法应该返回一个表示响应有效负载的POJO。最终用户不需要知道API在JSON中格式化有效负载。如果有一天API决定使用XML,那么这种更改对库的用户应该是透明的。

编辑:简单地返回一个字典,或者地图类型是不好的做法。这样做会迫使库的用户假定响应中每个属性的键字符串和值类型。POJO提供了响应属性名称及其值类型的明确定义。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44736979

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档