dart 如何实现一个不把数字转换成double的json解码器?

von4xj4u  于 2023-09-28  发布在  其他
关注(0)|答案(2)|浏览(79)

当我在从服务器返回的财务数据上调用json.decode时,我希望将数字转换为十进制(pub.dev包)(或者甚至将它们保留为字符串,以便稍后手动完成)。其他一切我想转换为正常
有一个reviver回调传递给_parseJson(),但我找不到这个外部函数的实现来研究。
更新:
看起来reviver()太晚了:基本的转换在这里已经发生了,并且传入了双精度数。是否有其他可供选择的回调函数?

xfyts7mz

xfyts7mz1#

我会使用jsontool包(免责声明:我写的,所以很明显这是我首先要做的)。它是一个低级JSON处理器,允许您(并且需要您)控制处理。
它有一个example,它将数字解析为BigInt s。您可能可以将其改为使用Decimal

ggazkfy8

ggazkfy82#

一种可能的方法是生成一个JSON解析器来满足您的需求。
例如,从这个PEG语法。
https://github.com/mezoni/peg/blob/main/example/json_parser.peg
您所需要做的就是更改产生式规则Number中的语义操作代码和结果类型。

YourType
@event
Number = v:$(
  [-]?
  ([0] / [1-9][0-9]*)
  ([.] [0-9]+)?
  ([eE] [-+]? [0-9]+)?
  ) Spaces { $$ = your_conversion(v); } ;

相关问题