当前位置: 首页 > 知识库问答 >
问题:

如何用集合字段序列化表单数据并在服务器端反序列化?

许胡非
2023-03-14
<form id="new-user-form">
  <label class="text-center col-form-label"><b>First Name:</b></label>
  <input type="text" id="firstname" name="firstname" value="" />

  <label class="text-center col-form-label"><b>Last Name:</b> </label>
  <input type="text" id="lastname" name="lastname" value="" />

  <label class="text-center col-form-label"><b>Age:</b></label>
  <input type="number" id="age" name="age" value="" />

  <label class="text-center col-form-label"><b>E-mail:</b></label>
  <input type="email" id="email" name="email" value="" />

  <label class="text-center col-form-label"><b>Password:</b></label>
  <input type="password" id="password" name="password" value="" />

  <label class="text-center col-form-label"><b>Role:</b></label>
  <select class="col-12 form-control" name="roles" multiple size="2">
    <option>ADMIN</option>
    <option>USER</option>
  </select>

  <button
    type="submit"
    id="submit-new-user"
    class="btn btn-primary btn-success"
  >
    Add new user
  </button>
</form>

因此,我需要从表单中获取用户数据,通过feth API将其发送到服务器,并将其放入数据库。

  1. 第一个问题是:如何将表单数据序列化(使用js)到JSON,这意味着它具有由集合(角色)表示的值?我想,通过fetch发送的JSON对象应该如下所示:
{ “firstname”: “Bob”,
“lastname”: “Marley”,
    “age”: 30,
    “email”: “bob@mail.com”,
    “password”: “password”,
    “roles”: [“ADMIN”, “USER”]  // or just [“USER”] or [“ADMIN”]
}

如何从表单中获取数据并获得这样的JSON?

共有1个答案

阎宝
2023-03-14

这里有几件事需要考虑:

1-在提交之前,从JS文件中的表单内容创建一个JSON:

示例:

function onSubmit( form ){
  var data = JSON.stringify( $(form).serializeArray() );

  console.log( data );
  return false; //don't submit
}
  const response = await fetch("backend:8080/api/user", {
    method: 'POST',
    headers: {
      'Content-Type': 'application/json'
    },
    body: data  // <-- Must be in JSON format
  });
public class User{

    @JsonProperty("firstName")
    private String firstName;

    @JsonProperty("lastName")
    private String lastName;

}



@RestController
@RequestMapping(value = "/api")
public class EmailControllerImpl {

    @PostMapping("/user")
    public ResponseEntity<String> addUser(@RequestBody User userPojo){

          //Deal with your User

    }
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>
 类似资料:
  • 问题内容: 使用,我可以将其发送到PHP页面。现在如何在PHP中反序列化它?它已在jQuery中序列化。 问题答案: 您无需从jquery 方法反序列化PHP中的任何内容。如果对数据进行序列化,则如果使用GET方法ajax请求,则应将其作为查询参数发送给PHP;如果使用POST ajax请求,则应将其作为vars发送。因此,在PHP中,您将访问类似或取决于请求类型的值。 该方法仅采用表单元素并将其

  • 问题内容: 在Apache Jackson和Jackson一起使用Apache Jersey进行JSON序列化时(在服务器和客户端上),在反序列化通用List时遇到问题。 我正在生成的JSON如下,“数据”中的所有3个类都实现“ CheckStatusDetail”: 产生此JSON的对象如下所示,我在客户端使用相同的类: 自从我将此注释添加到我的CheckStatusDetail接口后,就应用了

  • 在我们的项目(springMVC)Rest API项目中,我希望只对请求和响应使用一个模型(以避免添加大量代码将字段从一个对象复制到另一个对象) 我想用昂首阔步来处理所有的医生,但我遇到了一个小问题。例如,假设我有一个模型用户 和一个简单的控制器 现在,我希望swagger在反序列化时隐藏属性密码,而不是序列化(因此,在输入时显示它,但在输出时显示它),在Id字段中则相反。 我尝试使用@jsoni

  • 我想反序列化表单中的类: 其中文本是加密的,反序列化应该在重建TestFieldEncryptedMessage实例之前取消对值的加密。 我采用的方法非常类似于:https://github.com/codesqueak/jackson-json-crypto 也就是说,我正在构建一个扩展SimpleModule的模块: 如您所见,设置了两个修饰符:EncryptedSerializerModif

  • 我想进一步说明这个问题是关于什么的,我已经漫游了一个小时了,但没有找到任何东西。 更糟糕的是,正如您所看到的,该属性是final(这就是为什么我热衷于通过反序列化在实例化时使用Jackson反射能力)。我已经阅读了关于以不同的方式注释setter和getter的潜在解决方案,但如果可能的话,我希望将此属性保留为最终属性。如果不可能,我会接受一个非最终财产。 我希望答案不建议自定义序列化/反序列化,

  • 我试图使用一个服务,它给我一个实体,它的字段是一个数组。 但是,当数组包含单个项时,将返回项本身,而不是返回一个元素的数组。 在这种情况下,Jackson无法转换为我的Java对象。 有一个简单的解决方案吗?