关于@reponseBody和response.getWriter().println()输出JSON的一个区别

2023-12-01 22:58

本文主要是介绍关于@reponseBody和response.getWriter().println()输出JSON的一个区别,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

先来看看response.getWriter().println()的使用及返回的结果:

 @RequestMapping({"/wxLogin"})public void wxLogin(HttpServletRequest request, HttpServletResponse response)throws Exception{response.setCharacterEncoding("utf-8");String json = "";Gson gson = new Gson();Map<String,Object> map = new HashMap<String,Object>();PrintWriter out = response.getWriter();String id="sn258369";WXInfo wxInfo=wxInfoService.findById(id);String id2="sn357159";User user=userService.findById(id2);map.put("wxInfo", wxInfo);map.put("user",user);json=gson.toJson(map);out.print(json);out.flush();out.close();}

返回结果如下:

{"wxInfo":{"id":"189e725696fb44cd8f8c1519deb40148","nickName":"@\"nickname\" : @\"你你若安好111\"\"","sex":"1","country":"China","province":"Guangdong","city":"Shenzhen","unionId":"oWuV20tjS-8h12xxxc","openId":"oca0s6LxxxAU","avatarUrl":"http://thirdwx.qeUribdzW3GSQj2Q/132","mobilePhone":"139xxxxx802","subscribe":0,"createdDate":"2019-09-11 14:09:11.0","updatedDate":"2019-12-24 11:11:57"},"user":{"userId":"727","userName":"139xxxxx802","name":"Daniel","birthday":"1990-01-14 17:18:16.0","sex":"1","mobilePhone":"139xxxxx802","registerTime":"2019-06-05 18:02:11.0"},"status":2}

可以看到各个属性均有值,没有出现值为null的属性。再来看看使用@Responsebody的写法和返回结果:

    @RequestMapping("/wxLogin")@ResponseBodypublic Map<String, Object> wxLogin(HttpServletRequest request,HttpServletResponse response)throws Exception{response.setCharacterEncoding("utf-8");int status=0;Gson gson=new Gson();Map<String, Object>map=new HashMap<String, Object>();String id="sn258369";WXInfo wxInfo=wxInfoService.findById(id);String id2="sn357159";User user=userService.findById(id2);map.put("wxInfo", wxInfo);map.put("user",user);return map;}

返回结果如下:

{

    "wxInfo": {

        "id": "189e7256deb40148",

        "nickName": "@\"nickname\" : @\"你你若安好111安\"\"",

        "sex": "1",

        "country": "China",

        "province": "Guangdong",

        "city": "Shenzhen",

        "userId": null,

        "unionId": "oWuV20tjxxxDxc",

        "openId": "oca0s6xxxxeIH3AU",

        "avatarUrl": "http://thirdwx.qlogo.cn/2Q/132",

        "mobilePhone": "139xxxxx802",

        "subscribe": 0,

        "createdDate": "2019-09-11 14:09:11",

        "updatedDate": "2019-12-24 13:22:23"

    },

    "user": {

        "userId": "727",

        "userName": "139xxxxx802",

        "password": "",

        "name": "Daniel",

        "birthday": "1990-01-14",

        "sex": "1",

        "bloodType": null,

        "email": "",

        "height": null,

        "weight": null,

        "qqNum": null,

        "weChat": null,

        "weiBo": null,

        "homePhone": null,

        "mobilePhone": "1319xxxxx802",

        "officePhone": null,

        "country": null,

        "ctyId": null,

        "province": null,

        "city": null,

        "district": null,

        "address": null,

        "allergy": null,

        "remark": null,

        "dataURL": null,

        "registerTime": "2019-06-05 18:02:11.0",

        "ssuppliercode": null

    },

    "status": 2

}

可以看到,在返回user对象的时候,出现很多值为null的属性,这些属性均为user中的属性,但数据库查询到的值为null。

这是两种推送JSON方式,返回结果的差异,Gson已屏蔽掉值为null的属性,而@ResponseBody则根据对象的所有属性原原本本地返回。

这篇关于关于@reponseBody和response.getWriter().println()输出JSON的一个区别的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/443020

相关文章

Vue和React受控组件的区别小结

《Vue和React受控组件的区别小结》本文主要介绍了Vue和React受控组件的区别小结,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学... 目录背景React 的实现vue3 的实现写法一:直接修改事件参数写法二:通过ref引用 DOMVu

MyBatis-plus处理存储json数据过程

《MyBatis-plus处理存储json数据过程》文章介绍MyBatis-Plus3.4.21处理对象与集合的差异:对象可用内置Handler配合autoResultMap,集合需自定义处理器继承F... 目录1、如果是对象2、如果需要转换的是List集合总结对象和集合分两种情况处理,目前我用的MP的版本

C#下Newtonsoft.Json的具体使用

《C#下Newtonsoft.Json的具体使用》Newtonsoft.Json是一个非常流行的C#JSON序列化和反序列化库,它可以方便地将C#对象转换为JSON格式,或者将JSON数据解析为C#对... 目录安装 Newtonsoft.json基本用法1. 序列化 C# 对象为 JSON2. 反序列化

Python中Json和其他类型相互转换的实现示例

《Python中Json和其他类型相互转换的实现示例》本文介绍了在Python中使用json模块实现json数据与dict、object之间的高效转换,包括loads(),load(),dumps()... 项目中经常会用到json格式转为object对象、dict字典格式等。在此做个记录,方便后续用到该方

GSON框架下将百度天气JSON数据转JavaBean

《GSON框架下将百度天气JSON数据转JavaBean》这篇文章主要为大家详细介绍了如何在GSON框架下实现将百度天气JSON数据转JavaBean,文中的示例代码讲解详细,感兴趣的小伙伴可以了解下... 目录前言一、百度天气jsON1、请求参数2、返回参数3、属性映射二、GSON属性映射实战1、类对象映

从基础到高级详解Python数值格式化输出的完全指南

《从基础到高级详解Python数值格式化输出的完全指南》在数据分析、金融计算和科学报告领域,数值格式化是提升可读性和专业性的关键技术,本文将深入解析Python中数值格式化输出的相关方法,感兴趣的小伙... 目录引言:数值格式化的核心价值一、基础格式化方法1.1 三种核心格式化方式对比1.2 基础格式化示例

Go之errors.New和fmt.Errorf 的区别小结

《Go之errors.New和fmt.Errorf的区别小结》本文主要介绍了Go之errors.New和fmt.Errorf的区别,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考... 目录error的基本用法1. 获取错误信息2. 在条件判断中使用基本区别1.函数签名2.使用场景详细对

Redis中哨兵机制和集群的区别及说明

《Redis中哨兵机制和集群的区别及说明》Redis哨兵通过主从复制实现高可用,适用于中小规模数据;集群采用分布式分片,支持动态扩展,适合大规模数据,哨兵管理简单但扩展性弱,集群性能更强但架构复杂,根... 目录一、架构设计与节点角色1. 哨兵机制(Sentinel)2. 集群(Cluster)二、数据分片

java -jar example.jar 产生的日志输出到指定文件的方法

《java-jarexample.jar产生的日志输出到指定文件的方法》这篇文章给大家介绍java-jarexample.jar产生的日志输出到指定文件的方法,本文给大家介绍的非常详细,对大家的... 目录怎么让 Java -jar example.jar 产生的日志输出到指定文件一、方法1:使用重定向1、

一文带你迅速搞懂路由器/交换机/光猫三者概念区别

《一文带你迅速搞懂路由器/交换机/光猫三者概念区别》讨论网络设备时,常提及路由器、交换机及光猫等词汇,日常生活、工作中,这些设备至关重要,居家上网、企业内部沟通乃至互联网冲浪皆无法脱离其影响力,本文将... 当谈论网络设备时,我们常常会听到路由器、交换机和光猫这几个名词。它们是构建现代网络基础设施的关键组成