我想分享一种简单的方法,如何将Dart对象转换为字符串,以及如何反向操作。当然,你可以使用专门的库来完成这个任务。但在我的情况下,你只需使用标准Dart SDK中包含的库 dart:convert
。
要将字符串转换为对象,你可以使用以下方法:
jsonDecode(jsonString)
对于相反的操作,你应该使用:
jsonEncode(someObject)
如果你的对象内部包含比简单类型更复杂的结构,你应该提供额外的方法,就像下面的示例中所示:
class CustomClass {
final String text;
final int value;
CustomClass({required this.text, required this.value});
CustomClass.fromJson(Map<String, dynamic> json)
: text = json['text'],
value = json['value'];
static Map<String, dynamic> toJson(CustomClass value) =>
{'text': value.text, 'value': value.value};
}
void main() {
final CustomClass cc = CustomClass(text: 'Dart', value: 123);
final jsonText = jsonEncode({'cc': cc},
toEncodable: (Object? value) => value is CustomClass
? CustomClass.toJson(value)
: throw UnsupportedError('Cannot convert to JSON:$value'));
print(jsonText); // {"cc":{"text":"Dart","value":123}}
}
当然,你可以在文档中找到更多信息。