我有这样一个字符串:
{id:1, name: lorem ipsum, address: dolor set amet}
我需要将该字符串转换为JSON,在Dart Flutter中我该如何实现?非常感谢您的帮助。
我有这样一个字符串:
{id:1, name: lorem ipsum, address: dolor set amet}
我需要将该字符串转换为JSON,在Dart Flutter中我该如何实现?非常感谢您的帮助。
你需要使用json.decode
。它接受一个JSON对象并允许您处理嵌套的键值对。我将为您编写一个示例。
import 'dart:convert';
// actual data sent is {success: true, data:{token:'token'}}
final response = await client.post(url, body: reqBody);
// Notice how you have to call body from the response if you are using http to retrieve json
final body = json.decode(response.body);
// This is how you get success value out of the actual json
if (body['success']) {
//Token is nested inside data field so it goes one deeper.
final String token = body['data']['token'];
return {"success": true, "token": token};
}
class User {
int? id;
String? name;
String? address;
User({this.id, this.name, this.address});
User.fromJson(Map<String, dynamic> json) {
id = json['id'];
name = json['name'];
address = json['address'];
}
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = new Map<String, dynamic>();
data['id'] = this.id;
data['name'] = this.name;
data['address'] = this.address;
return data;
}
}
在逻辑部分
String data ='{id:1, name: lorem ipsum, address: dolor set amet}';
var encodedString = jsonEncode(data);
Map<String, dynamic> valueMap = json.decode(encodedString);
User user = User.fromJson(valueMap);
还需要导入
导入 'dart:convert';
json.decode
然后调用 User.fromJson
来正确地解析成对象。希望这能帮助其他人。 - Nick NString jsonStr = yourMethodThatReturnsJsonText();
Map<String,dynamic> d = json.decode(jsonStr.trim());
List<MyModel> list = List<MyModel>.from(d['jsonArrayName'].map((x) => MyModel.fromJson(x)));
我的模型 MyModel
大致如下:
class MyModel{
String name;
int age;
MyModel({this.name,this.age});
MyModel.fromJson(Map<String, dynamic> json) {
name= json['name'];
age= json['age'];
}
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = new Map<String, dynamic>();
data['name'] = this.name;
data['age'] = this.age;
return data;
}
}
toJson
函数? - KamleshMyModel model = new MyModel(...);
final json = model.toJson();
- Mohsen EmamitoJson()
是工厂类型函数,所以它会起作用吗?欢迎任何建议。谢谢。 - Kamleshuserinfo = { 'name': , 'phonenumber': '9829098290', 'city': 'california' }
的映射表。如果我将它传递给我的模型,例如 User.fromJson(userinfo)
,它就无法正常工作。我知道 name
字段为空。请建议如何使用它来创建模型类型值,例如 User.name
、User.phonenumber
、User.city
。谢谢。 - Kamlesh String name = "{click_action: FLUTTER_NOTIFICATION_CLICK, sendByImage: https://ujjwalchef.staging-server.in/uploads/users/1636620532.png, status: done, sendByName: mohittttt, id: HM11}";
List<String> str = name.replaceAll("{","").replaceAll("}","").split(",");
Map<String,dynamic> result = {};
for(int i=0;i<str.length;i++){
List<String> s = str[i].split(":");
result.putIfAbsent(s[0].trim(), () => s[1].trim());
}
print(result);
}
有时候你必须使用这个
Map<String, dynamic> toJson() {
return {
jsonEncode("phone"): jsonEncode(numberPhone),
jsonEncode("country"): jsonEncode(country),
};
}
这段代码会给你一个类似的字符串:{"numberPhone":"+225657869", "country":"CI"}。所以很容易解码,方法如下:
json.decode({"numberPhone":"+22565786589", "country":"CI"})
value = "{"id":0,"customerId":null,"title":"title"}";
var response = jsonDecode(value);
print(response['title']);
将字符串转换为JSON,我们必须使用自定义逻辑进行修改,在这里首先我们删除所有数组和对象符号,然后使用特殊字符拆分文本,并附加键和值(用于映射)。 请在dartpad.dev中尝试此代码片段。
import 'dart:developer';
void main() {
String stringJson = '[{product_id: 1, quantity: 1, price: 16.5}]';
stringJson = removeJsonAndArray(stringJson);
var dataSp = stringJson.split(',');
Map<String, String> mapData = {};
for (var element in dataSp) {
mapData[element.split(':')[0].trim()] = element.split(':')[1].trim();
}
print("jsonInModel: ${DemoModel.fromJson(mapData).toJson()}");
}
String removeJsonAndArray(String text) {
if (text.startsWith('[') || text.startsWith('{')) {
text = text.substring(1, text.length - 1);
if (text.startsWith('[') || text.startsWith('{')) {
text = removeJsonAndArray(text);
}
}
return text;
}
class DemoModel {
String? productId;
String? quantity;
String? price;
DemoModel({this.productId, this.quantity, this.price});
DemoModel.fromJson(Map<String, dynamic> json) {
log('json: ${json['product_id']}');
productId = json['product_id'];
quantity = json['quantity'];
price = json['price'];
}
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = <String, dynamic>{};
data['product_id'] = productId;
data['quantity'] = quantity;
data['price'] = price;
return data;
}
}
https://api.dartlang.org/stable/2.2.0/dart-convert/dart-convert-library.html