如题。我的需求是需要对request的entity stream进行预处理,这个stream可能非常长,但我只需要头部的某个属性,并且这个stream我会传给下面一个流水线进行处理,所以为了下个流水线得到的stream是完整的,我需要用BufferedInputstream对其进行封装,并且强制只读取前N字节,然后reset。因为我可以保证需要的信息肯定在前N个字节中。所以fastjson有没有能力处理不完整的json流?
wdebmtf21#
https://github.com/alibaba/fastjson/wiki/Stream-api看看这个是不是要的?
9w11ddsr2#
有个问题需要请教下,现在不能限定stream的结构是什么样,唯一能确定的是某个直接的属性是我要的,这点你给的链接应该就能实现,但不能保证这个属性排在很前面,也不能保证是否会存在一个非常非常复杂庞大的我不需要的属性。所以我希望这种读取是直接按长度试探式的,比如先读取1024个字节,如果解析不出需要的属性,直接报错。如果按照你给的连接,这种控制貌似只能在stream中进行控制。我对于InputStream.mask(n)和InputStream.reset()函数不是很了解,如果read了超过n个字节,是继续读下去,只是不保证reset成功,还是会直接报错呢?
2条答案
按热度按时间wdebmtf21#
https://github.com/alibaba/fastjson/wiki/Stream-api
看看这个是不是要的?
9w11ddsr2#
有个问题需要请教下,现在不能限定stream的结构是什么样,唯一能确定的是某个直接的属性是我要的,这点你给的链接应该就能实现,但不能保证这个属性排在很前面,也不能保证是否会存在一个非常非常复杂庞大的我不需要的属性。所以我希望这种读取是直接按长度试探式的,比如先读取1024个字节,如果解析不出需要的属性,直接报错。如果按照你给的连接,这种控制貌似只能在stream中进行控制。我对于InputStream.mask(n)和InputStream.reset()函数不是很了解,如果read了超过n个字节,是继续读下去,只是不保证reset成功,还是会直接报错呢?