文章目录
一、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.3java
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);