web-dev-qa-db-fra.com

conversion de chaîne en carte dans une fléchette

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.

5
Daniel Mana

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"} }
9

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();
3
Patrioticcow

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).

2
01leo