json-json|fastjson与jackson

本文详细介绍JSON数据格式,包括JSON对象与数组的结构。深入探讨阿里fastjson库的使用,涵盖JSON对象生成、字符串转换、Java对象互转及springboot配置。同时,对比jackson库,讲解其在JSON处理上的应用,适合Java开发者学习。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、JSON

JavaScript 对象表示法(JavaScript Object Notation)

1.JSON 对象

{ 
	"name":"菜鸟" ,
	 "age":18
 }
 
{ "flag":true }

{ "runoob":null }

1.JSON 数组

{
	"sites": [
	{ "name":"xiaoming" , "age":15}, 
	{ "name":"xiaohong" , "age":14}
	]
}

二、阿里fastjson

引入依赖

<dependency>
	<groupId>com.alibaba</groupId>
	<artifactId>fastjson</artifactId>
	<version>1.2.15</version>
</dependency>
JSON对象生成字符串
import com.alibaba.fastjson.JSON; 
import com.alibaba.fastjson.JSONObject;

JSONObject jObject=new JSONObject();
jObject.put("username", "xiejava");
jObject.put("sex", "man");
jObject.put("age", 38); 
jObject.put("email", "xiejava@ishareread.com");
String json2=jObject.toJSONString();
通过JSONArray包装对象数组
List<Card> cards=new ArrayList<Card>();
cards.add(card1);
cards.add(card2);
JSONArray jArray=new JSONArray();
jArray.addAll(cards);
json字符串转java对象(OrderInfo(orderId、orderDate))
OrderInfo orderInfo = JSON.parseObject(jsonStr, OrderInfo.class);
json字符串转json对象
String jsonStr ={\”orderId\” : \”1111111\”;\”orderDate\” : \”2016-11-22 11:03:00\”}; 
JSONObject jsonObject = JSON.parseObject(jsonStr); 
String orderId = jsonObject.getString(“orderId”); 
String orderDate =jsonObject.getString(“orderDate”);
java对象转json字符串
//java对象转json字符串
String jsonStr = JSON.toJSONString(orderInfo)
//java对象转json对象
JSON json = (JSON) JSON.toJSON(orderInfo);

springboot+fastjson

1.maven依赖

2.配置fastjson

方法1

1️⃣启动类继承WebMvcConfigurerAdapter
2️⃣覆盖方法configureMessageConverters

@SpringBootApplication
public class App extends WebMvcConfigurerAdapter{
	
	@Override
	public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
		super.configureMessageConverters(converters);
		// 1、需要先定义一个 convert 转换消息的对象;
		FastJsonHttpMessageConverter fastConverter = new FastJsonHttpMessageConverter();
		
//		//2、添加fastJson 的配置信息,比如:是否要格式化返回的json数据;
		FastJsonConfig fastJsonConfig = new FastJsonConfig();
		fastJsonConfig.setSerializerFeatures(
                SerializerFeature.PrettyFormat
        );		
//		//3、在convert中添加配置信息.
        fastConverter.setFastJsonConfig(fastJsonConfig);
        
        //4、将convert添加到converters当中.
    	converters.add(fastConverter);
	
	}
	//主方法
	public static void main(String[] args) {
		SpringApplication.run(App.class, args);
	}
}

使用方法

//将实体属性格式化
@JSONField(format="yyyy-MM-dd HH:mm")
private Date createTime;//创建时间.

/*
 * 我们不想返回remarks?
 * serialize:是否需要序列化属性.
 */
@JSONField(serialize=false)
private String remarks;//备注信息.
方法2(效果同1)
@SpringBootApplication
public class App{
	/**
	 * 在这里我们使用 @Bean注入 fastJsonHttpMessageConvert
	 * @return
	 */
	@Bean
	public HttpMessageConverters fastJsonHttpMessageConverters() {
		// 1、需要先定义一个 convert 转换消息的对象;
		FastJsonHttpMessageConverter fastConverter = new FastJsonHttpMessageConverter();
		
		//2、添加fastJson 的配置信息,比如:是否要格式化返回的json数据;
		FastJsonConfig fastJsonConfig = new FastJsonConfig();
		fastJsonConfig.setSerializerFeatures(SerializerFeature.PrettyFormat);
		
		//3、在convert中添加配置信息.
		fastConverter.setFastJsonConfig(fastJsonConfig);
		
		
		HttpMessageConverter<?> converter = fastConverter;
		return new HttpMessageConverters(converter);
	}
	
	//主方法
	public static void main(String[] args) {
		SpringApplication.run(App.class, args);
	}
}

三、jackson

Jackson有1.x系列和2.x系列,2.x系列有3个jar包需要下载:
jackson-core-2.2.3.jar(核心jar包)
jackson-annotations-2.2.3.jar(该包提供Json注解支持)
jackson-databind-2.2.3.jar

一个maven依赖就够了

com.fasterxml.jackson.core jackson-databind 2.5.3

java

package test;
import java.util.List;
import java.util.Map;
 
import com.fasterxml.jackson.databind.JavaType;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
/**
 * 日志类
 * @author Administrator
 *
 */
class Log{
	private int id;
	private String name;
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	@Override
	public String toString() {
		return "log [id=" + id + ", name=" + name + "]";
	}
	
}
public class JacksonTest {
 
	public static void main(String[] args) throws Exception {
		String json = "{\"username\":\"zhangsan\",\"性别\":\"男\",\"company\":{\"companyName\":\"中华\",\"address\":\"北京\"},\"cars\":[\"奔驰\",\"宝马\"],\"logList\":[{\"id\":123,\"name\":\"abc\"},{\"id\":234,\"name\":\"efff\"}]}";  
		//System.out.println(json);
		ObjectMapper mapper = new ObjectMapper();
		JsonNode rootNode = mapper.readTree(json);
		
		JsonNode usernameNode = rootNode.path("username");
		String username = mapper.writeValueAsString(usernameNode);
		System.out.println("==username==");
		System.out.println(username);
		
		//转换成类型,Map类型,同样Integer,String,List,也可以同样处理
		JsonNode companyNode = rootNode.path("company");
		String company = mapper.writeValueAsString(companyNode);		
		Map<String,Object> companyMap = mapper.readValue(company, Map.class);
		System.out.println("==company==");
		System.out.println(companyMap);
		
		//转换成List<Log>,类型
		JsonNode logListNode = rootNode.path("logList");
		String logJson = mapper.writeValueAsString(logListNode);
		JavaType logType = mapper.getTypeFactory().constructParametricType(List.class, Log.class);
		List<Log> logList = mapper.readValue(logJson, logType);
		System.out.println("==logList==");
		System.out.println(logList);		
 
	}
 
}

https://www.cnblogs.com/winner-0715/p/6109225.html

JackSon将java对象转换为JSON字符串

ObjectMapper mapper = new ObjectMapper();
Fruit fruit= new Fruit(“HaMiGua”, “1001”);
String mapJakcson = mapper.writeValueAsString(fruit);
System.out.println(mapJakcson);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值