我有一些将由用户填写的对象。我将这些对象解析为json并将该json添加到列表中以传递请求正文。但是我做不到。

  incrementListPaymentSlipes(PaymentSlipes objPayment) async {
    objPayment.name = "Douglas";
    objPayment.personalId = "00000000000";
    Map<String, dynamic> json = objPayment.toJson();
    listPaymentSlipes.add(jsonEncode(json));
  }
var response = await http.post(url, body: {
"payment_slips": listPaymentSlipes,
}

正确的 body 示例:
"payment_slips": [
    {
      "personal_id": "01888728680",
      "name": "Fulano da Silva"
    }
  ]
 {"error":"'{{personal_id: 00000000000, name: Douglas}}' é invalido como 'payment_slips'","code":"payment_slips_invalid"}```

最佳答案

因此,看来您没有获得所需的JSON。我整理了一些代码,向您展示如何获得所需的 body 。

链接以在DartPad中运行https://dartpad.dartlang.org/3fde03078e56efe13d31482dea8e5eef

    class PaymentSlipes {
      String name;
      String personaId;

      ObjPayment({this.name, this.personaId});

      //You create this to convert your object to JSON
      Map<String, dynamic> toJson() => {'name': name, 'personaId': personaId};
    }

    // This method is needed to convert the list of ObjPayment into an Json Array
    List encondeToJson(List<PaymentSlipes> list) {
      List jsonList = List();
      list.map((item) => jsonList.add(item.toJson())).toList();
      return jsonList;
    }

    // This is an example and this code will run in DartPad link above
    void main() {
      PaymentSlipes objPayment = PaymentSlipes(name: "Douglas", personaId: "123425465");
      PaymentSlipes objPayment2 = PaymentSlipes(name: "Dave", personaId: "123425465;
      PaymentSlipes objPayment3 = PaymentSlipes(name: "Mike", personaId: "123425465");
      var list = [objPayment, objPayment2, objPayment3];

      // This is the mapping of the list under the key payment_slips as per your example and the body i would pass to the POST
      var finalJson = {"payment_slips": encondeToJson(list)};
      print(finalJson);
    }

关于json - 如何在Flutter中将json列表传递给http请求正文(post)?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/58084921/

10-09 15:08
查看更多