com.alibaba.fastjson详细使用笔记

Fastjson是一个常用的Java库,其主要类包括JSON和JSONObject。这两个类基于finalMap实现,如LinkedHashMap或HashMap。JSONObject支持通过有序参数构造,并实现了Map<String,Object>接口。Fastjson能方便地将json字符串转换为Java对象,如JavaBean、Collection、Map、Date和Enum,同时也提供了parseArray方法用于将json数组转换为List<T>。
<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>fastjson</artifactId>
    <version>1.2.47</version>         
</dependency>

这个包里面最主要也是最常用的两个类是 JSON ,JSONObject  这两个类也都是内部使用的是final map 来实现的。构造的时候可以传入一个ordered。来确定使用LinkedHashMap还是HashMap。看下面这个构造。还可以使用map入参来构造jsonObject。也可以看到jsonobject实际上是json的子类。有一个特征就是 jsonObject是没有static方法的。我们打点出来的静态方法都是JSON那边继承过来的。就不往深挖源码了,知道大概就好。

关于json字符串转对象和字符串转json.  JavaBean、Collection、Map、Date、Enum、都可以。

 parseArray(jsonStr,Class<T>)   List<T>   jsonArray跟List<T>一样。

  JSONObject   实现了Map<String,Object> 接口。看下面方法好多跟map瞅着一样。

<think>我们使用FastJSON库将Java对象转换为JSON字符串。FastJSON是阿里巴巴开源的JSON处理库,性能优秀且易于使用。 步骤: 1. 添加FastJSON依赖(如Maven项目在pom.xml中添加)。 2. 使用FastJSONJSON.toJSONString()方法将Java对象转换为JSON字符串。 注意:FastJSON默认使用getter方法获取属性值,所以确保对象有public的getter方法(或者字段为public,但通常不推荐public字段,而是使用getter)。 示例代码: 假设有一个User类,我们将创建一个User对象并转换为JSON字符串。</think>### 使用FastJSON将Java对象转换为JSON字符串 FastJSON是阿里巴巴开源的高性能JSON库,提供简单易用的API实现Java对象与JSON之间的转换。以下是详细步骤和示例: #### 步骤说明 1. **添加依赖** 在Maven项目的pom.xml中添加FastJSON依赖(使用引用[1]中的版本): ```xml <dependency> <groupId>com.alibaba.fastjson2</groupId> <artifactId>fastjson2</artifactId> <version>2.0.37</version> </dependency> ``` 2. **创建Java对象** 定义需要转换的Java类(需包含getter方法): ```java public class Product { private String name; private double price; // 必须提供getter方法 public String getName() { return name; } public double getPrice() { return price; } public Product(String name, double price) { this.name = name; this.price = price; } } ``` 3. **执行转换** 使用`JSON.toJSONString()`方法: ```java import com.alibaba.fastjson2.JSON; public class Main { public static void main(String[] args) { // 创建对象 Product product = new Product("笔记本电脑", 5999.99); // 转换为JSON字符串 String jsonString = JSON.toJSONString(product); System.out.println(jsonString); // 输出: {"name":"笔记本电脑","price":5999.99} } } ``` #### 高级特性 1. **处理复杂对象** 支持嵌套对象和集合: ```java public class Order { private String orderId; private List<Product> items; // 嵌套对象集合 // getter方法... } // 转换示例 List<Product> items = Arrays.asList( new Product("鼠标", 99.9), new Product("键盘", 199.9) ); Order order = new Order("ORD2023", items); String json = JSON.toJSONString(order); /* 输出: { "orderId": "ORD2023", "items": [ {"name":"鼠标","price":99.9}, {"name":"键盘","price":199.9} ] } */ ``` 2. **自定义序列化** 使用`@JSONField`注解控制字段行为: ```java public class User { @JSONField(name = "full_name") // 自定义字段名 private String name; @JSONField(serialize = false) // 忽略此字段 private String password; // getter方法... } ``` 3. **格式化输出** 添加换行和缩进提高可读性: ```java String formattedJson = JSON.toJSONString(product, JSONWriter.Feature.PrettyFormat); ``` #### 性能建议 - **优势**:FastJSON在序列化速度上优于Gson,接近Jackson[^1] - **最佳实践**: 1. 重用`JSON`实例(线程安全) 2. 复杂对象使用`@JSONType`注解配置序列化规则 3. 避免频繁创建`JSONArray`/`JSONObject`实例 #### 常见问题解决 ```java // 问题:转换时字段缺失 // 解决:确保所有需要序列化的字段都有public getter方法 public double getPrice() { ... } // ✅ 正确 // 问题:日期格式异常 // 解决:使用注解指定格式 @JSONField(format = "yyyy-MM-dd") private Date createDate; ``` > 参考引用[1]的版本说明,当前示例使用FastJSON 2.0.37实现[^1]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值