glideapps / quicktype

Generate types and converters from JSON, Schema, and GraphQL
https://app.quicktype.io
Apache License 2.0
11.76k stars 1.04k forks source link

Null check error in Generated toJson methods in dart having nullable DateTime values #2590

Open anugrahkora opened 1 month ago

anugrahkora commented 1 month ago

When model for a json having a nullable field is generated, the generated toJson Method doesn't recognise nullable DateTime value and returns an exception Null check operator used on a null value.

Null Safety

Output

Input Format: Json Output Language: Dart

When we parse a large Json with multiple nullable date time object, the toJson Method causes the null check error and it is a lot of manual work to fix this issue

Use a null check before parsing the date on the toJson methods

Input Data

{ "debitNoteDate": "2023-01-01", "dueDate": "2023-01-01" }

Expected Behaviour / Output

Map<String, dynamic> toJson() => {

    "debitNoteDate": "${debitNoteDate!.year.toString().padLeft(4, '0')}-${debitNoteDate!.month.toString().padLeft(2, '0')}-${debitNoteDate!.day.toString().padLeft(2, '0')}",

    "dueDate": "${dueDate!.year.toString().padLeft(4, '0')}-${dueDate!.month.toString().padLeft(2, '0')}-${dueDate!.day.toString().padLeft(2, '0')}"
 };

Map<String, dynamic> toJson() => {

    "debitNoteDate": debitNoteDate==null? null:"${debitNoteDate!.year.toString().padLeft(4, '0')}-${debitNoteDate!.month.toString().padLeft(2, '0')}-${debitNoteDate!.day.toString().padLeft(2, '0')}",

    "dueDate":dueDate==null? null: "${dueDate!.year.toString().padLeft(4, '0')}-${dueDate!.month.toString().padLeft(2, '0')}-${dueDate!.day.toString().padLeft(2, '0')}"
 };

Current Behaviour / Output

Steps to Reproduce

1. 2. 3. 4.

Possible Solution