Comments (8)
For others who are looking for away to do this with Decimal without having to create static methods that you have to reference everywhere. This is the way I did it. It would be helpful for there to be more documentation about how to write converters for types from other packages. I do not know if this is the "right way" but to me the implementation is cleaner.
@JsonSerializable(nullable: false)
@_DecimalStringConverter()
class DecimalClass {
Decimal myDecimal;
}
class _DecimalStringConverter implements JsonConverter<Decimal, String> {
const _DecimalStringConverter();
@override
Decimal fromJson(String json) => json == null ? null : Decimal.parse(json);
@override
String toJson(Decimal object) => object?.toString();
}
from json_serializable.dart.
Fwiw, instead of trying to use the TypeHelper stuff you can just use the fromJson
and toJson
optional args on the JsonKey
annotation to use a custom function. The main issue with that is you have to do it per field though.
from json_serializable.dart.
Hey, sorry to open this again but I struggle with implementing the workaround...
what I try is something like:
@JsonKey(
name: "rate",
fromJson: Decimal.parse(value),
toJson: value.toString(),
)
Decimal rate;
fromJson
doesn't work because of Arguments of a constant creation must be constant expressions.
and toJson
because of The argument type 'String' can't be assigned to the parameter type 'Function'.
I get that toJson
can't work this way but also no Idea how to get this - and for fromJson
I don't really know what the error message means tbh :/
Thx for any hints
Ok, it seems I figured it:
what I did now is:
@JsonKey(
name: "rate",
fromJson: _decimalFromJson,
toJson: _decimalToJson,
)
Decimal rate;
static Decimal _decimalFromJson(input) => Decimal.parse(input);
static String _decimalToJson(input) => input.toString();
it seems I did two mistakes, 1. is not using a function (could probably also be an anonymous function?) and 2. the static keyword is needed for some reason.
anyways, it works, great! :)
(not yet 100% tested but I wanted to update this first.)
from json_serializable.dart.
Yes... that would be great. I'm a bit stuck here. @kevmoo it would be great if you could maybe add a comment here if you don't have the time to update the docs.
In my specific case, I need to convert Strings "123.45"
to Decimal
: Decimal.parse(value)
.
from json_serializable.dart.
@enyo – does the comment from @jakemac53 help?
from json_serializable.dart.
@kevmoo yes definitely! That is a completely acceptable workaround for now.
from json_serializable.dart.
Great to hear, @elmcrest
from json_serializable.dart.
Honestly, I want to get away from expose the type helper stuff.
It's a lot of internal plumbing that's just got more complex.
from json_serializable.dart.
Related Issues (20)
- Conflict between json_serializable and auto_route during build_runner execution HOT 1
- Suggestion: Better support for `createPerFieldToJson`
- Use @JsonConverter for map keys.
- Guidance on using `json_serializable` helper utilities
- Use of a generic JsonConverter
- How can I make it ignore "setter"?
- Generate an object to access json keys HOT 2
- More descriptive error messages when deserialising HOT 2
- When generating a List, the list type is invalid HOT 4
- Question: Will this packages support `extension types` like `kotlinx.serialization`?
- Allow extension type as Map keys if it extends one of primitive json types or has toJson() method
- [Enhancement] more options for `FieldRename`
- need fromJson with Type
- `JsonKey.fromJson` seems to be ignored HOT 1
- How to use fromJson and toJson to split it into 2 fields
- Support for nullable types that default to non-null HOT 1
- JsonKey + JsonConverter
- Generics complicate self-referential class structure
- Feature request: FromJson format to local time HOT 2
- Decimal, API and SQLite HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from json_serializable.dart.