json - 将元素添加到 json 字符串(数组)FLUTTER
问题描述
我有一个 JSON 字符串,在它里面我有一个数组,我想在下面添加数据:
String myJSON = '{"listOfSubtasks":["dasd","dadd","dadsd"]}';
arrayToStringAndBack(addElement) async {
var json = jsonDecode(myJSON);
var getArray = json['listOfSubtasks']; //returns [dasd,dadd,dadsd]
setState(() {
getArray.add(addElement);
});
// as I want to push it to a db I convert [dasd,dadd,dadsd] to a String ["dasd","dadd","dadsd"]
String arrayToString = jsonEncode(getArray);
print(arrayToString);
}
...
textfieldform
- onSaved: (val) {
subtasks = val;
arrayToStringAndBack(val);
},
...
当我键入 smth 并单击提交按钮时,一个元素会添加到数组的末尾,但是一旦我再次尝试添加一个元素,添加的最后一个元素就会更改为我创建的元素。
我想添加任意数量的元素,而不仅仅是一个元素
解决了
var arrayOfSubTasks = [];
arrayToStringAndBack(addElement, arr) async {
var json = jsonDecode(myJSON);
var getArray = json['listOfSubtasks'];
setState(() {
getArray.add(arr);
});
String arrayToString = jsonEncode(getArray);
print(arrayToString);
}
...
onSaved: (val) {
subtasks = val;
setState(() {
arrayOfSubTasks.add(val);
});
arrayToStringAndBack(val, arrayOfSubTasks);
},
解决方案
您可以将子任务列表视为列表,以便能够添加字符串List.add()
。然后将列表编码为jsonjsonEncode()
推荐阅读
- c# - 我可以克隆一个 IQueryable 以在另一个 DbContext 的 DbSet 上运行吗?
- c# - 用于 tcp/ip 服务器客户端连接的 C# 唯一 ID
- git - Git 钩子在源代码树上不起作用
- scala - 为什么 Spark 重新分区会导致 MemoryOverhead?
- logstash - ELK 读取和存储 log4j 日志
- git - 如果在用户计算机上签出,则监控代码仓库
- javascript - JS加载内容(Yandex Map)和android webview
- git - 无法将本地 git(在 AWS Ubuntu 上)与远程(在 BitBucket 上)同步
- javascript - 带有 Ionic 的 Google 表格 API
- upgrade - 如何将 splunk 6.1.4 升级到 6.5 有许可证