当我在从服务器返回的财务数据上调用json.decode时,我希望将数字转换为十进制(pub.dev包)(或者甚至将它们保留为字符串,以便稍后手动完成)。其他一切我想转换为正常有一个reviver回调传递给_parseJson(),但我找不到这个外部函数的实现来研究。更新:看起来reviver()太晚了:基本的转换在这里已经发生了,并且传入了双精度数。是否有其他可供选择的回调函数?
xfyts7mz1#
我会使用jsontool包(免责声明:我写的,所以很明显这是我首先要做的)。它是一个低级JSON处理器,允许您(并且需要您)控制处理。它有一个example,它将数字解析为BigInt s。您可能可以将其改为使用Decimal。
jsontool
BigInt
Decimal
ggazkfy82#
一种可能的方法是生成一个JSON解析器来满足您的需求。例如,从这个PEG语法。https://github.com/mezoni/peg/blob/main/example/json_parser.peg您所需要做的就是更改产生式规则Number中的语义操作代码和结果类型。
Number
YourType @event Number = v:$( [-]? ([0] / [1-9][0-9]*) ([.] [0-9]+)? ([eE] [-+]? [0-9]+)? ) Spaces { $$ = your_conversion(v); } ;
2条答案
按热度按时间xfyts7mz1#
我会使用
jsontool
包(免责声明:我写的,所以很明显这是我首先要做的)。它是一个低级JSON处理器,允许您(并且需要您)控制处理。它有一个example,它将数字解析为
BigInt
s。您可能可以将其改为使用Decimal
。ggazkfy82#
一种可能的方法是生成一个JSON解析器来满足您的需求。
例如,从这个PEG语法。
https://github.com/mezoni/peg/blob/main/example/json_parser.peg
您所需要做的就是更改产生式规则
Number
中的语义操作代码和结果类型。