Jackson与FastJson的json字符串解析

FastJson对应的Jackson相关对象/操作

对象/操作FastJsonJackson
json对象JSONObjectJsonNode
json集合JSONArrrayArrayNode
创建json对象JSON.parseObject()ObjectMapper.readTree()
获取json对象中的json对象jsonObject.getJSONObject()jsonNode.with()
获取json对象中的集合对象jsonObject.getJSONArray()jsonNode.withArray()

FastJson的json操作样例

1、实体类

public class User {
	public String getUserName() {
		return userName;
	}
	public void setUserName(String userName) {
		this.userName = userName;
	}
	public int getAge() {
		return age;
	}
	public void setAge(int age) {
		this.age = age;
	}
	public String getAddTime() {
		return addTime;
	}
	public void setAddTime(String addTime) {
		this.addTime = addTime;
	}
	String userName;
	int age;
	String addTime;
}
public class School {
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public int getAge() {
		return age;
	}
	public void setAge(int age) {
		this.age = age;
	}
	public String getAddTime() {
		return addTime;
	}
	public void setAddTime(String addTime) {
		this.addTime = addTime;
	}
	String name;
	int age;
	String addTime;
}

2、FastJson操作

import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.JsonMappingException;
import base.entity.School;
import base.entity.User;
public class FastjsonTest {
	public static void main(String[] args) throws JsonMappingException, JsonProcessingException {
		String jsonStr1 = "{\"userName\":\"小白\",\"age\":18,\"addTime\":1691851686568}";
		String jsonStr2 = "[{\"userName\":\"小白\",\"age\":18,\"addTime\":1691851686568}, {\"userName\":\"小黑\",\"age\":81,\"addTime\":1691851686568}]";
		String jsonStr3 = "{\"users\":[" + "{\"userName\":\"小白\",\"age\":18,\"addTime\":1691851686568},"
				+ " {\"userName\":\"小黑\",\"age\":81,\"addTime\":1691851686568}]"
				+ ",\"TM \":1666553371554 ,\"BJ\":\"三年级\",\"XX\":{\"name\":\"育英学校\",\"age\":18,\"addTime\":1691851686568}}";
		// 1.最简单的常用方法,直接将一个json转换成实体类。
		// 简单类型的时候,这样最方便
		User user1 = JSON.parseObject(jsonStr1, User.class);
		System.out.println("简单转换1: " + user1.getUserName());
		// -1)class转json。
		String userJson = JSON.toJSONString(user1);
		System.out.println("userJson: " + userJson);
		// 对象转json
		String json1 = JSON.toJSONString(user1);
		;
		System.out.println("json1: " + json1);
		// 2.把Json转换成map,必须使用 TypeReference , map的类型定义 可以根据实际情况来定,比如若值都是String那么就可以
		// Map<String, String>
		Map<String, Object> userMap = JSON.parseObject(jsonStr1, Map.class);
		System.out.println("map: " + userMap.get("userName"));
		// -2)map转Json
		String mapJson = JSON.toJSONString(userMap);
		System.out.println("mapJson: " + mapJson);
		// 3.list<Bean>模式。
		List<User> userList1 = JSON.parseArray(jsonStr2, User.class);
		System.out.println("list1: " + userList1.get(0).getUserName());
		// -3)list转Json
		String listJson = JSON.toJSONString(userList1);
		System.out.println("listJson: " + listJson);
		// list里面为string
		String strList1 = JSON.toJSONString(userList1);
		System.out.println("strList1: " + strList1);
		// 4.Bean[] 数组。
		User[] userArray;
		// 5、创建json对象
		JSONObject jsonObject = JSON.parseObject(jsonStr3);
		// 6、获取json对象中的集合对象
		JSONArray jsonArray = jsonObject.getJSONArray("users");
		// 6.1 将数组转字符串
		String arrayStr = JSON.toJSONString(jsonArray);
		List<User> userList2 = new ArrayList<User>();
		// 6.2 将字符串转list.
		userList2 = JSON.parseArray(arrayStr, User.class);
		System.out.println("list2: " + userList2.get(0).getUserName());
		// 7、获取json对象中的json对象
		String str = jsonObject.getString("XX");
		School school1 = JSON.parseObject(str, School.class);
		System.out.println("school1: " + school1.getName());
		// 8、获取json对象中的key值
		String str1 = jsonObject.getString("BJ");
		System.out.println("str1: " + str1);
	}
}

Jackson的json操作样例

1、实体类

     同上。

2、Jackson操作

import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.JsonMappingException;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.node.ArrayNode;
import com.fasterxml.jackson.databind.node.JsonNodeType;
import com.fasterxml.jackson.databind.node.ObjectNode;
import base.entity.School;
import base.entity.User;
public class JacksonTest {
	public static void main(String[] args) throws JsonMappingException, JsonProcessingException {
		String jsonStr1 = "{\"userName\":\"小白\",\"age\":18,\"addTime\":1691851686568}";
		String jsonStr2 = "[{\"userName\":\"小白\",\"age\":18,\"addTime\":1691851686568}, {\"userName\":\"小黑\",\"age\":81,\"addTime\":1691851686568}]";
		String jsonStr3 = "{\"users\":[" + "{\"userName\":\"小白\",\"age\":18,\"addTime\":1691851686568},"
				+ " {\"userName\":\"小黑\",\"age\":81,\"addTime\":1691851686568}]"
				+ ",\"TM \":1666553371554 ,\"BJ\":\"三年级\",\"XX\":{\"name\":\"育英学校\",\"age\":18,\"addTime\":1691851686568}}";
		ObjectMapper objectMapper = new ObjectMapper();
		// 1.最简单的常用方法,直接将一个json转换成实体类。
		// 简单类型的时候,这样最方便
		User user1 = objectMapper.readValue(jsonStr1, User.class);
		System.out.println("简单转换1: " + user1.getUserName());
		// 用 TypeReference 也可以,但是麻烦 不如第一种直接 TypeReference 主要针对繁杂类型
		User user2 = objectMapper.readValue(jsonStr1, new TypeReference<User>() {
		});
		System.out.println("简单转换2: " + user2.getUserName());
		// -1)class转json。
		String userJson = objectMapper.writeValueAsString(user1);
		System.out.println("userJson: " + userJson);
		// 2.把Json转换成map,必须使用 TypeReference , map的类型定义 可以根据实际情况来定,比如若值都是String那么就可以
		// Map<String, String>
		Map<String, Object> userMap = objectMapper.readValue(jsonStr1, new TypeReference<Map<String, Object>>() {
		});
		System.out.println("map: " + userMap.get("userName"));
		// -2)map转json
		String mapJson = objectMapper.writeValueAsString(userMap);
		System.out.println("mapJson: " + mapJson);
		// 3.list<Bean>模式,必须用 TypeReference。
		List<User> userList1 = objectMapper.readValue(jsonStr2, new TypeReference<List<User>>() {
		});
		System.out.println("list1: " + userList1.get(0).getUserName());
		// -3) list转json
		String listJson = objectMapper.writeValueAsString(userList1);
		System.out.println("listJson: " + listJson);
		// 4.Bean[] 数组,必须用 TypeReference。
		User[] userArray;
		userArray = objectMapper.readValue(jsonStr2, new TypeReference<User[]>() {
		});
		System.out.println("array: " + userArray[0].getUserName());
		// -4) 数组转json
		String arrayJson = objectMapper.writeValueAsString(userArray);
		System.out.println("arrayJson: " + arrayJson);
		// 5、创建json对象
		JsonNode jsonNode = objectMapper.readTree(jsonStr3);
		// -5) JsonNode转json
		String nodeJson = objectMapper.writeValueAsString(jsonNode);
		System.out.println("nodeJson: " + nodeJson);
		// 6、获取json对象中的集合对象
		ArrayNode arrayNode = jsonNode.withArray("users");
		List<User> userList2 = new ArrayList<User>();
		userList2 = objectMapper.readValue(arrayNode.toString(), new TypeReference<List<User>>() {
		});
		System.out.println("list2: " + userList2.get(0).getUserName());
		// 7、获取json对象中的json对象
		ObjectNode objectNode1 = jsonNode.with("XX");
		School school1 = objectMapper.readValue(objectNode1.toString(), School.class);
		System.out.println("school1: " + school1.getName());
		// 8、获取json对象中的key值
		JsonNode jsonNode1 = jsonNode.get("BJ");
		System.out.println("jsonNode1: " + jsonNode1.toString().replaceAll("\"", "").trim());
		System.out.println("jsonNode1: " + jsonNode1.asText("BJ"));
		// 只能取第一层key,key不存在返回null
		JsonNode name1 = jsonNode.get("BJ");
		// 只能取第一层key,key不存在返回MissingNode
		JsonNode name2 = jsonNode.path("BJ");
		// 全部key,取第一个,key不存在返回MissingNode,空字符串
		JsonNode name3 = jsonNode.findPath("BJ");
		// 全部key,取第一个,key不存在返回null,空指针
		JsonNode name4 = jsonNode.findValue("BJ");
		// 查找全部的key
		List<JsonNode> name5 = jsonNode.findValues("BJ");
		// 已经key路径查找
		JsonNode name6 = jsonNode.at("/XX/name");
		// 9、 获取类型
		JsonNodeType nodeType = jsonNode.getNodeType();
		// 判断是否是数组
		boolean array = jsonNode.isArray();
		// 判断是否是对象
		boolean object = jsonNode.isObject();
		// 判断是否是值
		boolean valueNode = jsonNode1.isValueNode();
		String s1 = jsonNode1.asText("BJ");
		JsonNode jsonNode2 = jsonNode.get("XX");
		System.out.println("jsonNode2: " + jsonNode2.toString().replaceAll("\"", "").trim());
		System.out.println("jsonNode2: " + jsonNode1.asText("XX"));
	}
}

3、其他说明

JackSon 默认是通过驼式命名法 ,有时比较特殊,比如映入其他系统的字段,可能都是大写,

可以通过@JsonProperty(value = “GS”)处理。

  @JsonProperty(value = "GS")
    private String GS;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值