dartjsonparser

How to implement a json decoder which doesn't convert numerics to double?


When I call json.decode on financial data returned from a server, I would like to either convert my numerics to decimal (pub.dev package) (or even leave them as strings so I can manually do that later). Everything else I would like to be converted as normal

There's a reviver callback which is passed to _parseJson(), but I can't find the implementation of this external function to study.

Update:

Looks like reviver() is too late: basic conversion has already happened by here and doubles get passed in. Is there any alternative callback that can be used?


Solution

  • I'd use the jsontool package (disclaimer: I wrote it, so obviously that's what I'd turn to first). It's a low-level JSON processor which allows you (and requires you) to take control of the processing.

    It has an example where it parses numbers into BigInts. You could probably adapt that to use Decimal instead.