flutter - Flutter 如何在 dart 中使用 json decode 将字符串转换为列表
问题描述
我有下面的列表,我想将其转换并存储为字符串,以便以后需要它时,我会将字符串解码回列表,以便将其用作参数。
List allTasks = [
{"project-name":"My First Project"},
{"date-time":"12 Mar 2021Z 12:34:05 am"},
{"people":["John","Doe"]},
{"project-body":[
{
"id":"0",
"color": Colors.transparent,
"name":"hello amigo",
"sub-children":[
{
"id":"0",
"color": Colors.transparent,
"type":"text",
"state":"waiting",
"mediaUrl":"",
"name":"Heya its me",
"hasMessage":false,
"people":[
{"person-id":"id110",
"profile-pic":"",
}
]
},
],
},
],
}
];
此代码用于将其存储在 sharedPreference首先我将列表转换为字符串然后传递它。
void storeValuesLocally(String mainlist)async{
SharedPreferences prefs = await SharedPreferences.getInstance();
String myToJson = json.encode(mainlist);
await prefs.setString('main-list', myToJson);
}
下面我试图将字符串解码回列表
void getAndSetTaskValues()async{
SharedPreferences prefs = await SharedPreferences.getInstance();
String values = (prefs.getString('main-list') ?? [].toString());
var castedToList = json.decode(values);
print(castedToList[0].runtimeType); // String
}
我的问题
每当我尝试将解码结果分配给列表时,它都会引发错误。这是因为castedToList
它是一个字符串,因为当我检查类型时它是一个字符串。我该如何解决这个问题。
解决方案
不要将其转换为字符串然后对其进行编码。因为解码它会返回一个字符串,因为它现在发生在你身上。
相反,按原样对列表进行编码。
void storeValuesLocally(List mainlist)
推荐阅读
- c# - Microsoft.Office.Interop.Word 检查字体大小
- wso2 - SSL 问题 WSO2 SP 4.4
- php - 无法重置表的自动增量
- python - 我如何解决 buildozer 中的这个 toolchain.py 错误
- c - 无法在 C 中的函数中设置二维字符串数组
- maxima - 为什么 Maxima 显示不正确的函数图?
- elasticsearch - 无法让弹性搜索范围查询工作
- docker - 关于 Docker 上的 nginx 配置
- hyperledger-fabric - 现有频道的配置更新未通过初始检查
- python - Pandas 在 groupby 之后计算列中的特定值并放入新列