将字符串转换为dart中的map

Dan*_*ana 12 dart flutter

我想将字符串转换为map.

String value = "{first_name : fname,last_name : lname,gender : male, location : { state : state, country : country, place : place} }"
Run Code Online (Sandbox Code Playgroud)

Map = {
first_name : fname,
last_name : lname,
gender : male,
location = {
  state : state, 
  country : country, 
  place : place
 }
}
Run Code Online (Sandbox Code Playgroud)

如何将字符串转换为map<String, dynamic>值包含string,int,object和boolean的位置?

我想将字符串保存到文件中并从文件中获取数据.

Gün*_*uer 22

那是不可能的.

如果您可以将字符串更改为有效的JSON,则可以使用

import 'dart:convert';
...
Map valueMap = json.decode(value);
Run Code Online (Sandbox Code Playgroud)

字符串需要看起来像

{"first_name" : "fname","last_name" : "lname","gender" : "male", "location" : { "state" : "state", "country" : "country", "place" : "place"} }
Run Code Online (Sandbox Code Playgroud)

  • 如果要保存现有映射,可以使用`json.encode`将该映射转换为有效的JSON字符串,然后使用`json.decode`正确解析. (3认同)
  • 您发布的内容不是 JSON。在 JSON 中,所有键和字符串值都需要引号。如果它是有效的 JSON,你可以使用 `vardecoded = json.decode(yourString); var map = Map.fromIterable(decoded, key: (e) =&gt; e.keys.first, value: (e) =&gt; e.values.first);`(未测试)。另见 https://api.dartlang.org/stable/2.1.0/dart-core/Map/Map.fromIterable.html (2认同)

Leo*_* Nx 7

您将不得不更改创建字符串的方式。

我猜您正在使用yourMap.toString()方法创建字符串,但是您应该使用json.encode(yourMap),它将您的地图解析为有效的JSON,您可以使用该json.decode(yourString)方法读取该JSON 。


Pat*_*cow 5

创建两个对象

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'];
}
Run Code Online (Sandbox Code Playgroud)

然后像这样使用它

var user = User.fromJson(value);
print(user.firstName);
Run Code Online (Sandbox Code Playgroud)

或将其转换为这样的列表

var user = User.fromJson(value).toList();
Run Code Online (Sandbox Code Playgroud)


Ras*_*han 5

你可以这样做->

导入'dart:转换';...

如果你的数据像这样 ** {'bus1':'100Tk','bus2':'150TK','bus3':'200TK'}

**;

那么你可以这样做->

Map valueMap = json.decode(value);
Run Code Online (Sandbox Code Playgroud)

// 或者

Map valueMap = jsonDecode(value);
Run Code Online (Sandbox Code Playgroud)

或者如果像这样 ->var data = {'1':'100TK','2':'200TK','3':'300TK'};

var dataSp = data.split(',');
Map<String,String> mapData = Map();
dataSp.forEach((element) => mapData[element.split(':')[0]] = element.split(':')[1]);
Run Code Online (Sandbox Code Playgroud)

注意:Map 第一个值是 Int,这就是我这样做的原因。