使用fastjson解析JSON数据

web传输数据目前比较流行的是json格式了,那么如何使用java将json数据解析出来呢?
JSON数据示例一: 这个案例中,顶层是对象,既有基本数据类型的,又有对象和数组类型的数据。

{
    
    
    "code":0,
    "msg":"查询用户信息" ,
    "user":{
    
    
        "id":12,
        "name":"Herrona"
    },
    "list":[
        {
    
    
            "id":1,
            "name":"yg"
        },
        {
    
    
            "id":2,
            "name":"yf"
        }]
}

JSON数据示例二:顶层是数组类型。

[
    {
    
    
        "name":"yg",
        "id":1
    },
    {
    
    
        "name":"yf",
        "id":2
    }
]

对于以上两个示例我们应该如何解析呢?
首先如果是maven项目的话,在POM.xml中引入fastjson依赖:

		<!-- JSON 开始 -->
		<dependency>
			<groupId>com.alibaba</groupId>
			<artifactId>fastjson</artifactId>
			<version>1.2.5</version>
		</dependency>
		<!-- json结束 -->

解析示例代码如下:

package json;

import java.util.ArrayList;
import java.util.List;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;

/**
 * Title: FastJsonTest
 * Description:  JSON数据解析示例
 * @author Herrona
 */
public class FastJsonTest {
    
    

	public static void main(String[] args) {
    
    
		parse();
		tojson();
		parseArray();
	}
	
	/**
	 * 解析json数据
	 */
	static void parse(){
    
    
		//JSON对象通常被序列化,也就是字符串形式
		String jsonstr = "{code:0,msg:'查询用户信息' , user:{id:12,name:'Herrona'},list:[{id:1,name:'yg'},{id:2,name:'yf'}]}";
		//最顶层的JSON对象
		JSONObject root = JSONObject.parseObject(jsonstr);
		System.out.println("json数据:"+root);
		//获得整型数据
		int code = root.getInteger("code");
		//获得字符串型数据
		String msg = root.getString("msg");
		System.out.println("代码:"+code);
		System.out.println("消息:"+msg);
		//获得对象
		JSONObject user =  root.getJSONObject("user");
		System.out.println("学号:" + user.getInteger("id"));
		System.out.println("姓名:" + user.getString("name"));
		//获得数组类型的属性
		JSONArray list =  root.getJSONArray("list");
		//遍历数组
		for(int i=0;i<list.size();i++) {
    
    
			JSONObject obj = (JSONObject) list.get(i);
			System.out.print("账号:"+obj.getIntValue("id")+"\t");
			System.out.println("姓名:"+obj.getString("name"));
		}
	}

	/**
	 * 将某java对象转换为json对象
	 */
	static void tojson(){
    
    
		User user = new User();
		user.setId(12);
		user.setName("Herrona");
		
		List<User> list = new ArrayList<>();
		list.add(new User(1,"yg"));
		list.add(new User(2,"yf"));
		
		System.out.println("将java对象转换为json对象:"+JSON.toJSON(user));
		System.out.println("将java对象列表转换为json对象:"+JSON.toJSON(list));
	}
	
	/**
	 * 解析数组类型
	 */
	static void parseArray() {
    
    
		String jsonstr = "[{'name':'yg','id':1},{'name':'yf','id':2}]";
		//顶层是数组
		JSONArray arr = JSON.parseArray(jsonstr);
		
		//遍历数组
		for(int i=0;i<arr.size();i++) {
    
    
			JSONObject obj = (JSONObject) arr.get(i);
			System.out.print("账号:"+obj.getIntValue("id")+"\t");
			System.out.println("姓名:"+obj.getString("name"));
		}
		
		//已知元素类型
		List<User> list = JSON.parseArray(jsonstr,User.class);//第二个参数指定元素类型
		for(User user : list) {
    
    
			System.out.println(user);
		}
	}
}

/**
 * Title: User
 * Description:  用户对象
 * @author Herrona
 */
class User {
    
    
	private Integer id;
	private String name;
	public User() {
    
    }
	public User(Integer id, String name) {
    
    
		super();
		this.id = id;
		this.name = name;
	}
	public Integer getId() {
    
    
		return id;
	}
	public void setId(Integer id) {
    
    
		this.id = id;
	}
	public String getName() {
    
    
		return name;
	}
	public void setName(String name) {
    
    
		this.name = name;
	}
	@Override
	public String toString() {
    
    
		return "学号:" + id + "\t姓名:" + name;
	}
	
}

猜你喜欢

转载自blog.csdn.net/qq_42864422/article/details/106951791
今日推荐