Skip to content

Instantly share code, notes, and snippets.

@RenatoRosaFranco
Last active June 25, 2023 17:03
Show Gist options
  • Save RenatoRosaFranco/9eef3035b0cdaaa1fe45f93d0cd922bb to your computer and use it in GitHub Desktop.
Save RenatoRosaFranco/9eef3035b0cdaaa1fe45f93d0cd922bb to your computer and use it in GitHub Desktop.
Dart JSON encode-decode example
// 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