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

石家庄网站建设今天改网名做淘宝客没网站

石家庄网站建设今天改网名,做淘宝客没网站,微信企业网站 源码,网站反连接Fastjson 是阿里巴巴开源的高性能 JSON 库&#xff0c;适用于 Java 对象的序列化&#xff08;生成 JSON&#xff09;和反序列化&#xff08;解析 JSON&#xff09;。以下是详细使用指南&#xff1a; 1. 添加依赖 <dependency><groupId>com.alibaba</groupId>…

Fastjson 是阿里巴巴开源的高性能 JSON 库,适用于 Java 对象的序列化(生成 JSON)和反序列化(解析 JSON)。以下是详细使用指南:


1. 添加依赖
<dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>2.0.39</version> <!-- 使用最新安全版本 -->
</dependency>

2. 基础用法
2.1 对象转 JSON(序列化)
import com.alibaba.fastjson.JSON;User user = new User("张三", 25);
String json = JSON.toJSONString(user);
// 输出:{"name":"张三","age":25}
2.2 JSON 转对象(反序列化)
String json = "{\"name\":\"李四\",\"age\":30}";
User user = JSON.parseObject(json, User.class);

3. 常用注解
3.1 字段控制
public class User {@JSONField(name = "user_name")  // 自定义字段名private String name;@JSONField(serialize = false)   // 忽略字段private String password;@JSONField(format = "yyyy-MM-dd HH:mm:ss")  // 日期格式化private Date createTime;
}
3.2 序列化顺序
@JSONType(orders = {"id", "name", "age"}) // 指定字段顺序
public class User {private Long id;private String name;private Integer age;
}

4. 高级配置
4.1 全局配置
// 序列化配置
SerializeConfig config = new SerializeConfig();
config.put(Date.class, new SimpleDateFormatSerializer("yyyy-MM-dd"));// 反序列化配置
ParserConfig parserConfig = new ParserConfig();
parserConfig.setSafeMode(true); // 启用安全模式防漏洞String json = JSON.toJSONString(obj, config);
User user = JSON.parseObject(json, User.class, parserConfig);
4.2 自定义序列化/反序列化
public class MoneySerializer implements ObjectSerializer {@Overridepublic void write(JSONSerializer serializer, Object value, Object fieldName, Type fieldType, int features) {BigDecimal amount = (BigDecimal) value;serializer.write(amount.setScale(2) + "元");}
}// 注册自定义序列化器
SerializeConfig.getGlobalInstance().put(BigDecimal.class, new MoneySerializer());

5. 处理复杂场景
5.1 泛型集合
// 序列化
List<User> users = Arrays.asList(new User("张三"), new User("李四"));
String json = JSON.toJSONString(users);// 反序列化
List<User> parsedUsers = JSON.parseArray(json, User.class);
5.2 循环引用处理
// 禁用循环检测(默认开启,可能导致StackOverflow)
String json = JSON.toJSONString(obj, SerializerFeature.DisableCircularReferenceDetect);
5.3 忽略未知字段
User user = JSON.parseObject(json, User.class, Feature.IgnoreNotMatch);

6. 性能优化
6.1 禁用特性检查
// 提升序列化速度(牺牲严格校验)
String json = JSON.toJSONString(obj, SerializerFeature.WriteMapNullValue, SerializerFeature.DisableCheckSpecialChar
);
6.2 使用JSONWriter处理大文件
try (JSONWriter writer = new JSONWriter(new FileWriter("large.json"))) {writer.startArray();for (User user : users) {writer.writeValue(user);}writer.endArray();
}

7. 安全防护
7.1 启用安全模式
ParserConfig.getGlobalInstance().setSafeMode(true); // 禁止反序列化任意类
7.2 白名单控制
// 只允许反序列化指定类
ParserConfig.getGlobalInstance().addAccept("com.example.model.");

8. 与 Spring 集成
8.1 替换 Spring MVC 默认 JSON 处理器
@Configuration
public class WebConfig implements WebMvcConfigurer {@Overridepublic void configureMessageConverters(List<HttpMessageConverter<?>> converters) {FastJsonHttpMessageConverter converter = new FastJsonHttpMessageConverter();converter.setFastJsonConfig(fastJsonConfig());converters.add(0, converter);}private FastJsonConfig fastJsonConfig() {FastJsonConfig config = new FastJsonConfig();config.setSerializerFeatures(SerializerFeature.PrettyFormat);config.setDateFormat("yyyy-MM-dd HH:mm:ss");return config;}
}

9. 常见问题解决
9.1 日期格式不匹配
// 全局配置日期格式
JSON.DEFFAULT_DATE_FORMAT = "yyyy-MM-dd";
String json = JSON.toJSONString(new Date()); // 输出 "2023-01-01"
9.2 字段名大小写问题
// 驼峰转下划线命名
Model model = new Model();
model.setUserName("test");
String json = JSON.toJSONString(model, SerializerFeature.UseSnakeCase);
// 输出 {"user_name":"test"}
9.3 处理枚举类型
public enum Status {@JSONField(name = "OK")  // 自定义枚举值名称SUCCESS,@JSONField(name = "ERR")FAILED
}String json = JSON.toJSONString(Status.SUCCESS); // 输出 "OK"

10. 性能对比建议
场景推荐方案
高并发接口Fastjson 默认配置 + 安全模式
复杂嵌套对象禁用循环引用检测 + 缓存配置
处理超大 JSON 文件使用 JSONReader/JSONWriter
需要严格类型安全启用安全模式 + 白名单控制

注意事项
  1. 版本安全:始终使用官方最新版本(Maven 仓库),避免历史漏洞。
  2. 数据来源:反序列化外部输入时,务必启用安全模式或白名单。
  3. 线程安全ParserConfigSerializeConfig 建议全局单例。
  4. 兼容性:Fastjson 与其他 JSON 库混用时,注意注解冲突问题。

通过合理配置,Fastjson 能以接近极限的性能处理 JSON 数据,但需在功能、安全、性能之间做好权衡。

http://www.dtcms.com/a/550038.html

相关文章:

  • DoIP(Diagnostic over IP)路由激活与诊断请求
  • 协议选型框架
  • Double DQN(DDQN)详解与实现
  • 针对Java集合框架的面试题有哪些
  • HashMap 的哈希算法与冲突解决:深入 Rust 的高性能键值存储
  • 甘肃省建设厅官方网站质监局淮安网站优化
  • 网站开发设计电子书wordpress相关文章插件
  • 【Python OOP Diary 3】高级特性与设计模式练习题(七至十三)
  • 音响网站模板镇江网站制作优化
  • 01_Kotlin语言基础学习
  • 运维:部署Jenkins
  • 01_FastMCP 2.x 中文文档之FastMCP的介绍
  • @FeignClient调用超时
  • Ubuntu(②共享剪贴板)
  • 桂林北站有核酸检测点吗app开发的公司
  • apache启动失败Failed to start The Apache HTTP Server.
  • 汕头建设南京网站seo服务
  • 饰品网站模板建立网站的作用
  • 解析视频融合平台EasyCVR的分析平台技术如何成为“全域视频管理中台”
  • ubuntu启动项问题
  • 网站开发工资咋样品牌建设的作用和意义
  • 展馆门户网站建设深圳网站外包公司
  • MATLAB高效算法实战
  • 网站导航图怎么做的详细步骤郑州发布直播
  • 做网站灰色网站怎么判刑北邻京网站茵建设
  • MySQL 读写分离:用 ProxySQL 实现 “读走从库,写走主库”(附延迟问题解决方案)
  • C Primer Plus Notes 10
  • wap网站制作动态如何做色流量网站
  • 【BTC】分叉
  • 高端建站咨询wordpress 音乐播放器 歌词