Last active
June 25, 2023 17:03
-
-
Save RenatoRosaFranco/9eef3035b0cdaaa1fe45f93d0cd922bb to your computer and use it in GitHub Desktop.
Dart JSON encode-decode example
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// frozen_string_literal: true | |
import 'dart:convert'; | |
conversaoDireta() { | |
print('JSON conversão direta'); | |
String jsonData = ''' | |
{ | |
"nome": "Renato Franco", | |
"idade": 28, | |
"email": "renato_ny@live.com" | |
} | |
'''; | |
// DECODE | |
// Transform a JSON into a map | |
Map<String, dynamic> parsedJson = jsonDecode(jsonData); | |
print('parsedJson: $parsedJson'); | |
String nome = parsedJson['nome']; | |
print('Nome: $nome'); | |
int idade = parsedJson['idade']; | |
print('Idade: $idade'); | |
String email = parsedJson['email']; | |
print('Email: $email'); | |
// ENCODE | |
// Transform a map into a JSON | |
Map<String, dynamic> map = {'nome': 'Hanzo Kimura', 'idade': 25, 'email': 'hanzo@gmail.com'}; | |
String tojSON = json.encode(map); | |
print('ToJSON: $tojSON'); | |
} | |
conversaoObjeto() { | |
print('JSON conversão em Objeto'); | |
String jsonData = ''' | |
[ | |
{ | |
"nome": "Renato Franco", | |
"idade": 28, | |
"email": "renato_ny@live.com" | |
}, | |
{ | |
"nome": "Hanzo Kimura", | |
"idade": 25, | |
"email": "hanzo@gmail.com" | |
} | |
] | |
'''; | |
List<dynamic> parsedJson = jsonDecode(jsonData); | |
print('Parsed JSON: $parsedJson'); | |
ListaUsuarios listaUsuarios = ListaUsuarios.fromJSON(parsedJson); | |
Usuario usuario = listaUsuarios.usuarios.singleWhere((e) => e.nome == 'Renato Franco'); | |
print('Uso Objeto: nome: ${usuario.nome}, idade: ${usuario.idade}, email: ${usuario.email}'); | |
var usuarioNovo = Usuario.fromJson({ | |
'nome': 'Chloe', | |
'idade': 1, | |
'email': 'cm@gmail.com', | |
}); | |
listaUsuarios.usuarios.addAll([usuarioNovo]); | |
// ENCODE | |
List<dynamic> lista = listaUsuarios.toJson(); | |
String toJson = json.encode(lista); | |
print('toJSON: $toJson'); | |
} | |
void main() { | |
conversaoDireta(); | |
conversaoObjeto(); | |
} | |
class Usuario { | |
late String nome; | |
late int idade; | |
late String email; | |
//? Default constructor | |
Usuario( | |
this.nome, | |
this.idade, | |
this.email | |
); | |
// Named constructor to create a new instance from a map | |
Usuario.fromJson(Map<String, dynamic> json) { | |
this.nome = json['nome']; | |
this.idade = json['idade']; | |
this.email = json['email']; | |
} | |
// Constructor factory return a new instance of class default constructor from a map | |
// factory Usuario.fromJson(Map<String, dynamic> json) { | |
// return Usuario(json['nome'], json['idade'], json['email']); | |
// } | |
Map<String, dynamic> toJson() { | |
return { | |
'nome': nome, | |
'idade': idade, | |
'email': email | |
}; | |
} | |
} | |
class ListaUsuarios { | |
List<Usuario> usuarios; | |
ListaUsuarios(this.usuarios); | |
factory ListaUsuarios.fromJSON(List<dynamic> json) { | |
return ListaUsuarios( | |
json.map((e) => Usuario.fromJson(e)).toList() | |
); | |
} | |
List<dynamic> toJson() { | |
return usuarios; | |
} | |
} | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment