当前位置: 首页 > news >正文

如何搭建一个企业子账号网站昆明网站制作推荐

如何搭建一个企业子账号网站,昆明网站制作推荐,网站空间自己做,网站建设需要多久才能学会ResponseBody 注解转换为 JSON 的原理与实现详解 1. 核心作用 ResponseBody 是 Spring MVC 的一个注解#xff0c;用于将方法返回的对象直接序列化为 HTTP 响应体#xff08;如 JSON 或 XML#xff09;#xff0c;而不是通过视图解析器渲染为视图#xff08;如 HTML… ResponseBody 注解转换为 JSON 的原理与实现详解 1. 核心作用 ResponseBody 是 Spring MVC 的一个注解用于将方法返回的对象直接序列化为 HTTP 响应体如 JSON 或 XML而不是通过视图解析器渲染为视图如 HTML。 关键作用 跳过视图解析阶段直接返回数据。触发 消息转换器HttpMessageConverter 将对象转换为指定格式如 JSON。 2. 工作流程详解 步骤 1方法返回对象 RestController public class UserController {GetMapping(/user)public User getUser() {return new User(John, 25); // 返回 Java 对象} }步骤 2触发消息转换 Spring 检测到 ResponseBody跳过视图解析直接进入消息转换阶段。选择合适的 HttpMessageConverter 根据 返回对象类型 和 请求的 Accept 头如 application/json选择转换器。默认情况下Spring Boot 自带的 Jackson 库 提供的 MappingJackson2HttpMessageConverter 会被选中。 步骤 3Jackson 序列化对象 Jackson 的 ObjectMapper负责将 Java 对象转换为 JSON 字符串。序列化过程 遍历对象的 getter 方法 或 字段。根据注解如 JsonProperty和配置如日期格式处理属性。忽略 transient 字段或 JsonIgnore 标记的字段。 // 示例 JSON 输出 {name: John,age: 25 }3. 完整代码示例 3.1 实体类User.java public class User {private String name;private int age;// 构造函数、getter 和 setter 方法public User(String name, int age) {this.name name;this.age age;}// 省略 getter/setter }3.2 控制器UserController.java import org.springframework.web.bind.annotation.*;RestController // 等效于 Controller ResponseBody public class UserController {GetMapping(/user)public User getUser() {return new User(John, 25); // 直接返回对象由 ResponseBody 触发转换}PostMapping(/user)public User createUser(RequestBody User user) {// 处理 POST 请求将 JSON 反序列化为 User 对象return user;} }3.3 测试请求 # GET 请求获取 JSON curl http://localhost:8080/user # 输出{name:John,age:25}# POST 请求发送 JSON curl -X POST -H Content-Type: application/json -d {name:Jane,age:30} http://localhost:8080/user4. 消息转换器HttpMessageConverter详解 Spring MVC 通过 HttpMessageConverter 完成对象到 HTTP 响应的转换。 核心接口HttpMessageConverterT canRead()判断是否支持反序列化如 JSON → 对象。canWrite()判断是否支持序列化如对象 → JSON。write()实际执行序列化操作。 常用实现类 类名作用默认支持格式MappingJackson2HttpMessageConverterJSON 转换依赖 Jackson 库application/jsonMappingJackson2XmlHttpMessageConverterXML 转换需额外配置application/xmlStringHttpMessageConverter字符串转换text/plain 5. Jackson 配置与自定义 通过自定义 ObjectMapper 可控制 JSON 序列化行为 5.1 配置示例 import com.fasterxml.jackson.databind.ObjectMapper; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import java.text.SimpleDateFormat;Configuration public class JacksonConfig {Beanpublic ObjectMapper objectMapper() {ObjectMapper mapper new ObjectMapper();// 设置日期格式mapper.setDateFormat(new SimpleDateFormat(yyyy-MM-dd HH:mm:ss));// 忽略未找到的字段反序列化时mapper.disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES);return mapper;} }5.2 常用注解 注解作用JsonProperty指定 JSON 键名覆盖字段名。JsonFormat定制日期/数字格式。JsonInclude控制字段是否参与序列化如 JsonInclude(JsonInclude.Include.NON_NULL)。JsonIgnore忽略字段。 6. 常见问题与解决方案 Q1为什么 JSON 中没有某个字段 可能原因 字段没有 getter 方法。字段被 JsonIgnore 或 transient 修饰。JsonInclude 配置排除了该字段如 NON_NULL 且值为 null。 Q2如何处理循环引用 解决方案JsonManagedReference // 主对象单向引用 JsonBackReference // 被引用对象忽略反向引用Q3如何自定义序列化逻辑 自定义序列化器public class CustomSerializer extends JsonSerializerDate {Overridepublic void serialize(Date value, JsonGenerator gen, SerializerProvider serializers)throws IOException {gen.writeString(new SimpleDateFormat(yyyy-MM-dd).format(value));} }Q4如何禁用 HTML 转义 配置Bean public MappingJackson2HttpMessageConverter jackson2HttpMessageConverter() {MappingJackson2HttpMessageConverter converter new MappingJackson2HttpMessageConverter();converter.getObjectMapper().disable(SerializationFeature.ESCAPE_NON_ASCII);return converter; }7. 总结表格 环节关键组件职责触发转换ResponseBody告知 Spring 直接返回数据跳过视图解析。选择转换器HttpMessageConverter根据返回类型和 Accept 头选择合适的转换器。序列化JacksonObjectMapper将 Java 对象转换为 JSON 字符串。配置扩展自定义 ObjectMapper精细控制序列化格式、日期、忽略策略等。 总结 ResponseBody 通过结合 HttpMessageConverter 和 Jackson将 Java 对象无缝转换为 JSON 响应。掌握其工作原理和配置方法可以灵活处理 RESTful API 的数据格式化需求。对于复杂场景如自定义序列化、处理循环引用可通过 Jackson 的注解和配置进一步优化。
http://www.pierceye.com/news/793214/

相关文章:

  • 网站下载音乐网站开发公司知乎
  • 什么样式表一般用于大型网站什么是seo搜索
  • 做网站用vue还是用jquery济宁网站建设 中企动力临沂
  • 网站专题教程最吸引人的营销广告词
  • 瑞安网站网站建设如何推广自己的店铺
  • 建设网站花都水泥公司网站建设
  • asp网站怎么下载源码农业做的好的网站
  • 导购网站怎么做视频教学网页设计与制作教程第5版
  • 建设部施工安全管理网站网站建设公司如何
  • 企业商城建站公司网站页面加密
  • 昆山教育云平台网站建设软件工程师考试报名
  • ps做网站大小尺寸大连开发区商场
  • 化妆品网站建设网站右键禁止
  • wordpress 没有样式表网站如何免费做SEO优化
  • 青岛有没有专门做淘宝网站中国建设人才网站
  • 网站移动端是什么问题吗怎样自己做免费的网站
  • 做网站没有做退钱宁波品牌策划公司
  • 网站备案 不关站家乡网页制作模板
  • 成都网站建设企业 排名网络营销推广方案ppt
  • 阳西住房和城乡规划建设局网站微信公众号商城制作
  • 石家庄自助建站软件邯郸做紧固件网站
  • 做川菜的网站动画制作网页
  • 网站建设的英文域名注册需要什么条件
  • wordpress管理系统贵州seo和网络推广
  • 网站第二次备案设计方案审核合格后由谁签字确认
  • 网页设计和网站编辑wordpress 页面瀑布流
  • 福田网站建设龙岗网站建设ie的常用网站
  • 网站推广途径和推广要点地产网站方案
  • 用asp做的网站2021互联网公司100强
  • 网站运营无经验可以做吗垂直类网站怎么做