shiburagi / JsonToDart

VS Code Extension

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

jsontodart

Demo : https://jsontodart.zariman.dev/

How to use

Method 1

  1. Copy JSON
  2. Open Command Pallete, and find JsonToDart: Convert JSON from Clipboard
  3. Fill the box, select the option
  4. Done

Method 2

  1. Copy JSON
  2. Right click on folder or dart file
  3. Click Convert JSON from Clipboard Here
  4. Fill the box, select the option
  5. Done

More Configuration

To handle null value on generated model, you can define/change data type on pubspec.yaml

Example:

jsonToDart:
  nullValueDataType: String #default: dynamic

Sample

{
    "data": {
        "id": 2,
        "email": "janet.weaver@reqres.in",
        "first_name": "Janet",
        "last_name": "Weaver",
        "avatar": "https://reqres.in/img/faces/2-image.jpg"
    },
    "support": {
        "url": "https://reqres.in/#support-heading",
        "text": "To keep ReqRes free, contributions towards server costs are appreciated!"
    }
}

Output:

class User {
    Data? data;
    Support? support;

    User({this.data, this.support});

    User.fromJson(Map<String, dynamic> json) {
        this.data = json["data"] == null ? null : Data.fromJson(json["data"]);
        this.support = json["support"] == null ? null : Support.fromJson(json["support"]);
    }

    Map<String, dynamic> toJson() {
        final Map<String, dynamic> data = new Map<String, dynamic>();
        if(this.data != null)
            data["data"] = this.data?.toJson();
        if(this.support != null)
            data["support"] = this.support?.toJson();
        return data;
    }
}

class Support {
    String? url;
    String? text;

    Support({this.url, this.text});

    Support.fromJson(Map<String, dynamic> json) {
        this.url = json["url"];
        this.text = json["text"];
    }

    Map<String, dynamic> toJson() {
        final Map<String, dynamic> data = new Map<String, dynamic>();
        data["url"] = this.url;
        data["text"] = this.text;
        return data;
    }
}

class Data {
    int? id;
    String? email;
    String? firstName;
    String? lastName;
    String? avatar;

    Data({this.id, this.email, this.firstName, this.lastName, this.avatar});

    Data.fromJson(Map<String, dynamic> json) {
        this.id = json["id"];
        this.email = json["email"];
        this.firstName = json["first_name"];
        this.lastName = json["last_name"];
        this.avatar = json["avatar"];
    }

    Map<String, dynamic> toJson() {
        final Map<String, dynamic> data = new Map<String, dynamic>();
        data["id"] = this.id;
        data["email"] = this.email;
        data["first_name"] = this.firstName;
        data["last_name"] = this.lastName;
        data["avatar"] = this.avatar;
        return data;
    }
}

Customize (pubspec.yaml)

jsonToDart:
  outputFolder: lib/models #default: lib/
  typeChecking: true  #default: undefined (Select from picker)
  nullValueDataType: String #default: dynamic
  nullSafety: false #default: true
  copyWithMethod: true #default: false
  mergeArrayApproach: false #default: true
  
   #default: false, 
   #if true, value = (json[key] as num).toInt() or value = (_data[key] as num).toDouble()
   #if false, value = json[key]
   #if "ask", selection popup will apear before parse json
  checkNumberAsNum: true # true, false, "ask"

About

VS Code Extension


Languages

Language:TypeScript 92.7%Language:JavaScript 7.3%