当前位置:   article > 正文

Map和List输入的两种不同json格式

Map和List输入的两种不同json格式

一、List to json格式

[{"@type":"top.lovemom.pojo.ESP8266","devicePosition":"家里的阳台","deviceRemark":"我的设备1","publicIp":"127.0.0.1","userEmail":"123b@ggb.top"},{"@type":"top.lovemom.pojo.HardwareLED","stateCurrentLED":1,"statusControlLED":0,"timeCurrentLED":"2024-03-31 15:48:53"}]

1.1 list解析呈现

1.2 list json 生成 源码

  1. package top.lovemom.servlet;
  2. import java.io.IOException;
  3. import java.io.PrintWriter;
  4. import java.text.SimpleDateFormat;
  5. import java.util.ArrayList;
  6. import java.util.Date;
  7. import java.util.List;
  8. import javax.servlet.ServletException;
  9. import javax.servlet.annotation.WebServlet;
  10. import javax.servlet.http.HttpServlet;
  11. import javax.servlet.http.HttpServletRequest;
  12. import javax.servlet.http.HttpServletResponse;
  13. import com.alibaba.fastjson.JSON;
  14. import com.alibaba.fastjson.serializer.SerializerFeature;
  15. import top.lovemom.pojo.ESP8266;
  16. import top.lovemom.pojo.HardwareLED;
  17. /**
  18. * Servlet implementation class TestServlet
  19. */
  20. @WebServlet("/BW29y82UI")
  21. public class GetContextServlet extends HttpServlet {
  22. private static final long serialVersionUID = 1L;
  23. /**
  24. * @see HttpServlet#HttpServlet()
  25. */
  26. public GetContextServlet() {
  27. super();
  28. // TODO Auto-generated constructor stub
  29. }
  30. /**
  31. * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
  32. */
  33. protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
  34. request.setCharacterEncoding("UTF-8");
  35. String ip = request.getRemoteAddr();
  36. System.out.println("————"+ip+"————实现get请求");
  37. ESP8266 esp = new ESP8266();
  38. esp.setPublicIp(ip);
  39. esp.setUserEmail("123b@ggb.top");
  40. esp.setDeviceRemark("我的设备1");
  41. esp.setDevicePosition("家里的阳台");
  42. Date now = new Date();
  43. SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  44. String formattedDate = sdf.format(now);
  45. HardwareLED led = new HardwareLED();
  46. led.setStateCurrentLED(1);
  47. led.setTimeCurrentLED(formattedDate);
  48. // 创建一个 List 对象来存储 ESP8266 和 HardwareLED 对象
  49. List<Object> objectList = new ArrayList<>();
  50. // 将 ESP8266 和 HardwareLED 对象添加到 List 中
  51. objectList.add(esp);
  52. objectList.add(led);
  53. // 将 List 对象转换为 JSON 字符串
  54. String respondJson = JSON.toJSONString(objectList, SerializerFeature.WriteClassName);
  55. // 设置响应的内容类型为application/json
  56. response.setContentType("application/json");
  57. response.setCharacterEncoding("UTF-8");
  58. // 获取响应的输出流
  59. PrintWriter out = response.getWriter();
  60. // 将JSON字符串写回客户端
  61. out.println(respondJson);
  62. out.flush();
  63. }
  64. }

二、Map to json格式

{"top.lovemom.pojo.ESP8266":{"devicePosition":"家里的阳台","deviceRemark":"我的设备1","publicIp":"127.0.0.1","userEmail":"123b@ggb.top"},"top.lovemom.pojo.HardwareLED":{"stateCurrentLED":1,"statusControlLED":0,"timeCurrentLED":"2024-03-31 15:58:50"}}

2.1 map解析呈现

2.2 map json 生成 源码

  1. package top.lovemom.servlet;
  2. import java.io.IOException;
  3. import java.io.PrintWriter;
  4. import java.text.SimpleDateFormat;
  5. import java.util.Date;
  6. import java.util.LinkedHashMap;
  7. import java.util.Map;
  8. import javax.servlet.ServletException;
  9. import javax.servlet.annotation.WebServlet;
  10. import javax.servlet.http.HttpServlet;
  11. import javax.servlet.http.HttpServletRequest;
  12. import javax.servlet.http.HttpServletResponse;
  13. import com.alibaba.fastjson.JSON;
  14. import top.lovemom.pojo.ESP8266;
  15. import top.lovemom.pojo.HardwareLED;
  16. @WebServlet("/BW29y82UI")
  17. public class GetContextServlet extends HttpServlet {
  18. private static final long serialVersionUID = 1L;
  19. public GetContextServlet() {
  20. super();
  21. }
  22. protected void doGet(HttpServletRequest request, HttpServletResponse response)
  23. throws ServletException, IOException {
  24. request.setCharacterEncoding("UTF-8");
  25. String ip = request.getRemoteAddr();
  26. System.out.println("————" + ip + "————实现get请求");
  27. ESP8266 esp = new ESP8266();
  28. esp.setPublicIp(ip);
  29. esp.setUserEmail("123b@ggb.top");
  30. esp.setDeviceRemark("我的设备1");
  31. esp.setDevicePosition("家里的阳台");
  32. Date now = new Date();
  33. SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  34. String formattedDate = sdf.format(now);
  35. HardwareLED led = new HardwareLED();
  36. led.setStateCurrentLED(1);
  37. led.setTimeCurrentLED(formattedDate);
  38. // 创建一个 Map 对象来存储 ESP8266 和 HardwareLED 对象
  39. Map<String, Object> jsonObject = new LinkedHashMap<>();
  40. // 将 ESP8266 和 HardwareLED 对象添加到 Map 中
  41. jsonObject.put(esp.getClass().getName(), esp);
  42. jsonObject.put(led.getClass().getName(), led);
  43. // 将 Map 对象转换为 JSON 字符串
  44. String respondJson = JSON.toJSONString(jsonObject);
  45. // 设置响应的内容类型为application/json
  46. response.setContentType("application/json");
  47. response.setCharacterEncoding("UTF-8");
  48. // 获取响应的输出流
  49. PrintWriter out = response.getWriter();
  50. // 将JSON字符串写回客户端
  51. out.println(respondJson);
  52. out.flush();
  53. }
  54. }

三、说明

在Java中,List和Map是两种不同的数据结构,它们在生成JSON格式数据时可以产生不同的输出。

  1. List生成JSON格式

    • 当使用List存储对象时,通常会将对象按顺序存储在List中。在将List转换为JSON格式时,对象的顺序会被保留,JSON数组中的元素顺序与List中的顺序一致。这意味着在前端处理JSON数据时,可以根据元素在数组中的位置来访问和操作数据。
    • 例如,在你的代码中,你将ESP8266和HardwareLED对象存储在List中,然后将List转换为JSON格式,输出的JSON数组中的元素顺序与List中的顺序一致。
  2. Map生成JSON格式

    • 使用Map时,可以使用键值对的方式存储数据。在将Map转换为JSON格式时,键值对会被转换为JSON对象的属性和值。键值对在JSON对象中没有固定的顺序,它们的顺序不影响JSON对象的解析和处理。
    • 例如,在修改后的代码中,你创建了一个Map对象来存储ESP8266和HardwareLED对象,然后将Map转换为JSON格式,输出的JSON对象中的属性顺序不受影响,因为JSON对象中的属性顺序在规范中并不重要。

通常情况下属性用List、对象用Map

JSON格式对前后端分离的重要性

JSON格式在前后端分离架构中扮演了重要角色,具有以下几个方面的重要性:

  1. 数据交换标准:JSON作为一种轻量级的数据交换格式,被广泛应用于前后端数据传输中。前端通过HTTP请求从后端获取JSON格式的数据,然后可以使用JavaScript轻松地解析和处理这些数据。

  2. 灵活性和可读性:JSON具有简洁清晰的结构,易于阅读和理解。它支持复杂的数据结构,包括嵌套对象和数组,使得可以传输各种类型的数据。

  3. 跨语言支持:JSON是一种语言无关的数据格式,几乎所有编程语言都有对JSON的解析和生成支持。这意味着可以在不同的技术栈之间轻松地传递数据,实现跨平台的数据交换。

  4. 前后端分离:JSON格式的广泛应用促进了前后端分离架构的发展。通过将数据和界面逻辑分离,前端工程师可以专注于前端界面的开发和优化,而后端工程师则可以专注于数据处理和业务逻辑的实现。这种分离提高了开发效率和代码的可维护性。

因此,JSON格式在前后端分离架构中扮演了至关重要的角色,它提供了一种简单、灵活、跨平台的数据交换方式,促进了前后端的协作和开发效率。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/不正经/article/detail/360363
推荐阅读
相关标签
  

闽ICP备14008679号