fastjson利用
时间: 2025-01-17 14:01:35 浏览: 40
### FastJson 的使用方法与最佳实践
#### 解析 JSON 数据
FastJson 支持多种方式解析 JSON 字符串到 Java 对象。对于简单的 JSON 字符串,可以直接调用 `parseObject` 方法:
```java
String jsonString = "{\"code\":0,\"msg\":\"查询用户信息\",\"user\":{\"id\":12,\"name\":\"Herrona\"},\"list\":[{\"id\":1,\"name\":\"yg\"},{\"id\":2,\"name\":\"yf\"}]}";
JSONObject jsonObject = JSONObject.parseObject(jsonString);
int code = jsonObject.getIntValue("code");
String msg = jsonObject.getString("msg");
User user = jsonObject.getObject("user", User.class); // 需要提前定义好对应的类结构
List<User> list = jsonObject.getJSONArray("list").toJavaList(User.class);
System.out.println(code + ", " + msg + ", " + user.getName() + ", " + list.get(0).getName());
```
上述代码展示了如何将复杂的嵌套 JSON 转换成相应的 Java 类型[^3]。
#### 生成 JSON 数据
当需要把 Java 对象转换成 JSON 格式时,可以利用 `.toJSONString()` 或者 `JSON.toJSONBytes()` 来完成这一操作:
```java
public class Main {
public static void main(String[] args) {
Map<String, Object> map = new HashMap<>();
List<Map<String, String>> userList = Arrays.asList(
Collections.singletonMap("name", "yg"),
Collections.singletonMap("name", "yf")
);
map.put("code", 0);
map.put("msg", "查询用户信息");
map.put("user", Collections.singletonMap("name", "Herrona"));
map.put("list", userList);
System.out.println(JSON.toJSONString(map));
}
}
```
这段程序会输出如下格式化的 JSON 文本:
```json
{
"code": 0,
"msg": "查询用户信息",
"user": {"name": "Herrona"},
"list": [
{"name": "yg"},
{"name": "yf"}
]
}
```
此过程不仅限于简单类型,也适用于复杂对象及其集合形式的序列化[^1]。
#### 自定义序列化行为
为了满足特定需求下的序列化定制,比如调整日期时间格式或是处理特殊字段映射等问题,可以通过设置全局配置项或是在实体类上添加注解的方式来进行控制:
```java
// 设置默认日期模式为 yyyy-MM-dd HH:mm:ss
Config.configInstance().setDateFormat("yyyy-MM-dd HH:mm:ss");
// 定义带注解的 POJO 类
class Event {
@JSONField(format="yyyyMMdd") private Date date;
// getter and setter...
}
Event event = new Event();
event.setDate(new Date());
// 输出自定义格式的时间戳
System.out.println(JSONObject.toJSONString(event));
```
这里通过 `@JSONField` 注解指定了属性 `date` 在转为 JSON 时采用指定格式表示[^2]。
阅读全文
相关推荐


















