fastjson有没有一个类似Jackson中的JsonNode

dfuffjeb  于 2021-11-27  发布在  Java
关注(0)|答案(13)|浏览(419)

类似Jackson中JsonNode类,既可以表示ObjectNode,也可以表示ArrayNode, 这样在写通用的http调用接口时,返回值就可以用JsonNode,因为http的返回值并不事先确定是ObjectNode或者是ArrayNode.
fastjosn中有JSONObject表示Jackson中的ObjectNode,有ArrayObject表示Jackson中的ArrayNode,但没有表示通用的JsonNode。

x4shl7ld

x4shl7ld1#

JSONObject/JSONArray

iqjalb3h

iqjalb3h2#

@wenshao JSONObject 相当于jackson中的ObjectNode, JSONArray相当于jackson中的ArrayNode, 但jackson中还有JsonNode可以同时表示两者,相同于一个父类,fastxml中有这个父类可以同时表示JSONObject/JSONArray吗

ee7vknir

ee7vknir3#

为什么会有这个需求呢? 比如http请求的返回值,在不知道具体会返回ObjectNode还是ArrayNode的情况下,可以用jsonNode作为返回值。但在fastxml中不知道用什么

irlmq6kh

irlmq6kh4#

我比较喜欢简单粗暴的返回Object。 但是如果你一定的要找个父类来返回, 你返回JSON也是可以的。JSONObject/JSONArray都是继承抽象类 JSON的

44u64gxh

44u64gxh5#

实际上不太可能会有这种需求, 这样对客户端不友好

knpiaxh1

knpiaxh16#

我用的一个三方库,http返回jsonnode我觉得还是非常合理,调用接口的人才知道返回的是 列表还是字典

enxuqcxy

enxuqcxy7#

你们库中的JSONObject的get接口返回的是JSONObject与JSONArray, 如果用JSON取代,JSON类里面本身又不具有获取值的方法,尴尬

ecr0jaav

ecr0jaav8#

个人感觉fastjson在使用姿势上比jackson简单了很多, 如果能支持这个属性,就完美了.......

fhity93d

fhity93d9#

@neil4dong 简单粗暴地返回Object,会让使用麻烦很多

ncecgwcz

ncecgwcz10#

你是指的客户端反序列化吧, 而不是服务端序列化

pieyvz9o

pieyvz9o11#

@neil4dong 如果是之前的返回JsonNode的情况下,应该是不需要反序列化的吧, 我的理解很多情况下,不需要特别的创建一个类去反序列化

unhi4e5o

unhi4e5o12#

像gson那种每次反序列化时都需要创建一个类,是一种很麻烦的事情

quhf5bfb

quhf5bfb13#

我的意思是有一个JsonNode能像字典一样使用json,大多数时候也就不需要去执行特殊的反序列化。

相关问题