我想将字符串转换为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)
您将不得不更改创建字符串的方式。
我猜您正在使用yourMap.toString()
方法创建字符串,但是您应该使用json.encode(yourMap)
,它将您的地图解析为有效的JSON,您可以使用该json.decode(yourString)
方法读取该JSON 。
创建两个对象
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)
你可以这样做->
导入'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,这就是我这样做的原因。
归档时间: |
|
查看次数: |
15413 次 |
最近记录: |