使用 FormData 序列化嵌套在数组中的对象是否不同?

Is serializing objects nested inside array differently using FormData?

我正在尝试使用 FormData() 序列化 Web 表单。我的后端是 Python 的 Cherrypy 服务器。

预期的 JSON 是这样的:

{
   "price":1,
   "quantity_left":100,
   "packaging_weight":2,
   "variant_names":[
      {
         "name_line":"苹果",
         "is_primary_identifying_flag":"on"
      },
      {
         "name_line":"apple"
      }
   ]
}

但是,在序列化 var form_data = new FormData(this.inner_form); 并通过 FormData.append 手动添加数组后,JSON 变为:

    {
       "price":1,
       "quantity_left":100,
       "packaging_weight":2,
       "variant_names":[object, Object]
    }

FormData 不能像这样处理嵌套对象吗?

没有。 FormData 的值 must be a string or Blob:

The field's value. This can be a USVString or Blob (including subclasses such as File). If none of these are specified the value is converted to a string.

与其使用 FormData,不如考虑将整个对象字符串化,然后将其作为负载发送。或者,将作为对象的内部值字符串化(并在服务器上对其进行解码)。