-
Notifications
You must be signed in to change notification settings - Fork 31
Incompatible with json_serializable toJson/fromJson: issue _safeKeyFromJson #58
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Comments
@JoanSchi I don't actually use json_serializable. The serialization code was actually contributed by others, so I wouldn't know how to fix it or test it. Since you already have a solution, could you please create a PR? Thanks! |
Thanks I made PR, however I tested all the Types. BigInt DateTime, uri and String works fine, nevertheless int double bool results in a type error. Unfortenately these types are not parsed correctly by json_serializable. I filled in a issue: google/json_serializable.dart#1332 Depending on the response of this issue I will make a fix. (It takes a little bit longer) Nevertheless I learned to make a PR :) |
Hi @JoanSchi could you please tell me the status of this solution? Should I apply it? Your issue in |
Hi @marcglasberg, Unfortunately it is not fixed in json_serializable. For a temporal workaround I use a JsonConverter. For now it is better to leave it as it is. It won't last very long before macro will be introduced in Dart, with a new json_serializable based on macro's, I hope this fix the issue. |
Need to reconsider this, now that macros have been scrapped. |
@larssn @JoanSchi Thanks so much for sharing this information. At the moment, I'm maintaining 16 packages (https://pub.dev/publishers/glasberg.dev/packages) and actively developing https://mytext.ai/, so I haven't had the chance to fully dive into json_serializable and fix this issue. I need your help. It would be absolutely amazing if someone familiar with json_serializable could take a closer look and help find a solution. Perhaps opening a new issue for json_serializable (since the previous one was closed) or even submitting a PR to either json_serializable or fast_immutable_collections could be a great step forward. Huge thanks in advance, I truly appreciate any help! |
@marcglasberg @larssn tuple_example: Also:
|
@marcglasberg Converting to a key, value list breaks compatibility and standardization, this is not a good option. |
@JoanSchi If you are wanting to fix the issue in JsonSerializable, the PR that I made is a bit out of date, but might provide some place to start from. google/json_serializable.dart#1221. This also links to an older issue for the same problem. It seems like the design in my PR was not well received. ("I'm REALLY worried about the complexity added here – for a pretty narrow scenario."). While I recognize that it is pretty narrow in some senses, and the solution was somewhat complex, I'm not sure how to go about making the argument that it is worth it, and I don't want to seem argumentative or forceful. Unfortunately this just encourages fragmentation in the ecosystem, since if it is too complex for the official package to maintain then someone will have to maintain a fork if they care about this. I'm happy if someone wants to refactor the PR to make it more acceptable and try again, but I no longer have the need for this in my project. Or since my PR was not well received it might be better to start from scratch and compare / contrast the approaches to see if what you come up with is simpler or not. |
@TimWhiting, Thank you, I know of your PR and it is very flexible as far I can tell :). Unfortunately if there are worries about the complexity, I hope they will consider a simple implementation with the same key type support as Map. (Serialization package is to complex for me to fix the issue) |
Hi
Thank you for the great package.
Issue:
I tried to use IMap<DateTime,something> with json_serializable 6.7.0 and FIC 9.1.5. Unfortunately I get a string casting error, probably the same issue as #39. Therefore I made a example with IMap, Map with DateTime and Enum as key.
I also made a example and tested the example with a suggested solution.
Problem:
The json_serializable converts the string in the desired type, while _safeKeyToJson tries again to convert the already converted type. In my case: instead of DateTime.parse(string) it will be DateTime.parse(DateTime) at this cause the casting error. (See generated code)
Suggestion for Solution
Because the type convertion is already done by json_serializable, a possible solution could be: removing _safeKeyFromJson. This works fine and is compatible with serializable and freezed package. (Could _safeKeyFromJson be a option {bool safeKey = false/true} ?)
Temperal fix:
Test Example
Convertion to json and back:
The text was updated successfully, but these errors were encountered: