我正在使用登录API,我得到的回复是
"code": 200,
"status": "Login successful",
"data": {
"isNewUser": false,
"customerUUID": "edb67e95-9528-425a-9afd-c67b761570db",
"userName": "TEST",
"token": {
"Accesstoken": "58fd6cb0-f28f-11ea-a9dc-876a9b1d065f",
"Refreshtoken": "2175bcc1-f2e2-4c6c-b820-e470475c288a",
"expirationperiod": 1599654407160
}
}
我只需要一点帮助,例如如何在共享首选项中保存此响应,特别是我需要分别保存它们
答案 0 :(得分:0)
1。将JSON转换为模型类
class LoginModel {
Data data;
int code;
String status;
LoginModel({this.data, this.code, this.status});
factory LoginModel.fromJson(Map<String, dynamic> json) {
return LoginModel(
data: json['data'] != null ? Data.fromJson(json['data']) : null,
code: json['code'],
status: json['status'],
);
}
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = new Map<String, dynamic>();
data['code'] = this.code;
data['status'] = this.status;
if (this.data != null) {
data['data'] = this.data.toJson();
}
return data;
}
}
class Data {
String customerUUID;
bool isNewUser;
Token token;
String userName;
Data({this.customerUUID, this.isNewUser, this.token, this.userName});
factory Data.fromJson(Map<String, dynamic> json) {
return Data(
customerUUID: json['customerUUID'],
isNewUser: json['isNewUser'],
token: json['token'] != null ? Token.fromJson(json['token']) : null,
userName: json['userName'],
);
}
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = new Map<String, dynamic>();
data['customerUUID'] = this.customerUUID;
data['isNewUser'] = this.isNewUser;
data['userName'] = this.userName;
if (this.token != null) {
data['token'] = this.token.toJson();
}
return data;
}
}
class Token {
String accesstoken;
int expirationperiod;
String refreshtoken;
Token({this.accesstoken, this.expirationperiod, this.refreshtoken});
factory Token.fromJson(Map<String, dynamic> json) {
return Token(
accesstoken: json['accesstoken'],
expirationperiod: json['expirationperiod'],
refreshtoken: json['refreshtoken'],
);
}
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = new Map<String, dynamic>();
data['accesstoken'] = this.accesstoken;
data['expirationperiod'] = this.expirationperiod;
data['refreshtoken'] = this.refreshtoken;
return data;
}
}
2。以共享首选项保存编码的Json,例如:
LoginModel loginModel = LoginModel.fromJson(apiResponse);
await saveString("key_login", jsonEncode(vendor.toJson()));
3。对该函数进行分类以保存值
void saveString(String key, String value) async {
Future<SharedPreferences> _prefs = SharedPreferences.getInstance();
SharedPreferences preferences = await _prefs;
preferences.setString(key, value);
}
4。通过此功能获取价值:
Future<LoginModel> getLoginDetail() async {
var top = await getSession("key_login");
if (top != null) {
return LoginModel.fromJson(jsonDecode(top));
} else {
return null;
}
}
答案 1 :(得分:0)
要保存json,您需要将其转换为String。
increment(X,Y) :- Y is X+1.
要使用json检索数据
addStringToSF() async {
SharedPreferences prefs = await SharedPreferences.getInstance();
Map<String, dynamic> map = {
"name":"name",
"user":{
"id":12,
"role":"something"
}
}
prefs.setString('key', json.encode(map));
}