Je voulais convertir une chaîne en carte.
String value = "{first_name : fname,last_name : lname,gender : male, location : { state : state, country : country, place : place} }"
dans
Map = {
first_name : fname,
last_name : lname,
gender : male,
location = {
state : state,
country : country,
place : place
}
}
Comment convertir la chaîne en un map<String, dynamic>
dont la valeur est composée de chaîne, int, objet et booléen?
Je voulais enregistrer la chaîne dans un fichier et obtenir les données du fichier.
Ce n'est pas possible.
Si vous pouvez modifier la chaîne en JSON valide, vous pouvez utiliser
import 'Dart:convert';
...
Map valueMap = json.decode(value);
La chaîne aurait besoin de ressembler à
{"first_name" : "fname","last_name" : "lname","gender" : "male", "location" : { "state" : "state", "country" : "country", "place" : "place"} }
créer deux objets
class User {
final String firstName;
final String lastName;
final String gender;
final location;
User({
this.firstName,
this.lastName,
this.gender,
this.location,
});
User.fromJson(Map json)
: firstName = json['firstName'],
lastName = json['lastName'],
gender = json['gender'],
location = Location.fromJson(json['location']);
}
class Location {
final String state;
final String country;
final String place;
Location({
this.state,
this.country,
this.place,
});
Location.fromJson(Map json)
: state = json['state'],
country = json['country'],
place = json['place'];
}
puis utilisez-le comme ça
var user = User.fromJson(value);
print(user.firstName);
ou le convertir en liste comme ça
var user = User.fromJson(value).toList();
Vous devrez changer la façon dont vous créez la chaîne.
Je suppose que vous créez la chaîne avec la méthode yourMap.toString()
, mais vous devriez plutôt utiliser json.encode(yourMap)
, qui analyse votre mappe au format JSON valide, que vous pouvez lire à l'aide de la méthode json.decode(yourString)
.