返回

JSON工具类的构建(前端版本)

前端

在前后端交互的选择上,之前一直采用的是模板引擎(因为我只负责后端)。而这次的一个算是作业吧,前后端都是我,所以就研究了一下JSON交互在java web的应用(主要是前端)。

因为我是先写后端版本的,所以优缺点部分请跳转至JSON工具类的构建(后端版本)查看。

因为我对js也没做过深入的研究,所以我写前端的代码一般就是现学现卖,而且说实话我对js也不是特别感冒,感觉挺乱的,代码不清晰,而且可维护性也不太好。

既然是这样,那我就说说我写的JSON交互代码吧。

首先是前端的JS代码:

function sendJSONData() {
  var data = {
    "name": "John Doe",
    "age": 30,
    "city": "New York"
  };

  var xhr = new XMLHttpRequest();
  xhr.open("POST", "http://localhost:8080/json", true);
  xhr.setRequestHeader("Content-Type", "application/json");
  xhr.send(JSON.stringify(data));

  xhr.onreadystatechange = function() {
    if (this.readyState == 4 && this.status == 200) {
      var response = JSON.parse(this.responseText);
      console.log(response);
    }
  };
}

这段代码很简单,首先是定义了一个JSON对象data,然后用XMLHttpRequest对象发送了一个POST请求到服务器端的JSON端点,并将JSON对象data作为请求体发送了过去。

然后在服务器端处理完请求后,会返回一个JSON响应,前端的JS代码会通过onreadystatechange事件监听器来处理这个响应,并将JSON响应解析成一个JavaScript对象,然后就可以在控制台输出这个对象了。

这是前端的代码,那么后端的代码是怎么样的呢?

@PostMapping(path = "/json")
public @ResponseBody ResponseEntity<String> receiveJSONData(@RequestBody String data) {
  // 将JSON数据解析成一个Java对象
  JsonObject jsonObject = new JsonObject(data);

  // 从JSON对象中获取数据
  String name = jsonObject.get("name").getAsString();
  int age = jsonObject.get("age").getAsInt();
  String city = jsonObject.get("city").getAsString();

  // 将数据存储到数据库中

  // 返回一个JSON响应
  JsonObject response = new JsonObject();
  response.addProperty("status", "success");
  response.addProperty("message", "Data received successfully");

  return ResponseEntity.ok(response.toString());
}

这段代码也很简单,首先是通过@RequestBody注解将请求体中的JSON数据解析成一个Java对象,然后从这个Java对象中获取数据,并将数据存储到数据库中。

最后返回一个JSON响应,告诉前端数据接收成功了。

这就是JSON交互的前端和后端代码了,其实也很简单,没有什么难的。

优点:

  • JSON是一种轻量级的文本格式,易于解析和生成。
  • JSON是语言无关的,可以被任何编程语言解析和生成。
  • JSON支持多种数据类型,包括字符串、数字、布尔值、数组和对象。
  • JSON是一种非常灵活的数据格式,可以用来表示各种各样的数据。

缺点:

  • JSON不适合表示二进制数据。
  • JSON是一种文本格式,因此它比二进制格式占用的空间更大。
  • JSON是一种不安全的格式,因为它不提供任何数据加密功能。