Flutter:将字符串转换为 Map

Flutter: Convert string to Map

我正在使用 SQFlite 在本地存储数据,我有一个 table,其中有一个名为 'json' 的字段,该字段的类型为 TEXT 并存储一个 json 转换到字符串,例如:'{name: Eduardo, Age: 23, Sex: male}'.

到目前为止,一切正常。

但是我需要从数据库中查询这些信息,以及它是如何以文本类型格式存储的,flutter 将其识别为字符串。我不知道如何将它转换回对象。 我知道我可以构建一个函数来解决这个问题,因为 json 中存储的信息始终符合相同的结构。但就我而言,json 包含的信息将是可变的。

有没有办法解决这个问题?

您可以简单地使用 dart:convert 包中的 json.decode 函数。

示例:


import 'dart:convert';

main() {
  final jsonString = '{"key1": 1, "key2": "hello"}';
  final decodedMap = json.decode(jsonString);

  // we can now use the decodedMap as a normal map
  print(decodedMap['key1']); 
}

查看这些链接了解更多详情

https://api.dart.dev/stable/2.10.3/dart-convert/json-constant.html

https://api.dart.dev/stable/2.4.0/dart-convert/dart-convert-library.html

如果您遇到 json 键没有引号的问题,请尝试使用此代码将不带引号的字符串转换为带引号的字符串,然后对其进行解码,它 100% 有效




final string1 = '{name : "Eduardo", numbers : [12, 23], country: us }';

// remove all quotes from the string values
final string2=string1.replaceAll("\"", "");

// now we add quotes to both keys and Strings values
final quotedString = string2.replaceAllMapped(RegExp(r'\b\w+\b'), (match) {
  return '"${match.group(0)}"';
});

// decoding it as a normal json
  final decoded = json.decode(quotedString);
  print(decoded);