首页 > 解决方案 > 将元素添加到 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);
  },

标签: jsonflutterdart

解决方案


您可以将子任务列表视为列表,以便能够添加字符串List.add()。然后将列表编码为jsonjsonEncode()


推荐阅读