FastJSON操作各種格式的JSON數據

最近項目裏搞很複雜的json數據,藉此機會整理了一下fastJSON操作各種格式的json數據;舉一反三,學會以下幾種JSON數據類型的操作,其他再複雜的json數據也能輕鬆解決;

如果是maven項目,首先引入fastjson依賴

<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>fastjson</artifactId>
    <version>1.2.66</version>
</dependency>

1 最簡單得到Map格式的json數據

{
	"name": "李四",
	"age": 20 ,
	"sex": "男"
}

測試

package com.maltose.util;

import com.alibaba.fastjson.JSONObject;

import java.util.Map;

/**
 * @author sgw
 * @DATE 20200625
 */
public class FastJsonTest {

    public static void main(String[] args) {
        String jsonData = "{\n" + "\t\"name\": \"李四\",\n" + "\t\"age\": 20 ,\n" + "\t\"sex\": \"男\"\n" + "}";
        Map map = (Map) JSONObject.parse(jsonData);
        System.out.println(map.get("name") + "," + map.get("age") + "," + map.get("sex"));
    }
}

結果
在這裏插入圖片描述

2 json裏嵌套json(不含數組)

即Map裏嵌套Map

{
	"user1": {
		"username": "張三",
		"age": 21
	},
	"user2": {
		"username": "Tom",
		"age": 39
	},
	"user3": {
		"username": "李四",
		"age": 43
	}
}

測試

package com.maltose.util;

import com.alibaba.fastjson.JSONObject;

import java.util.Iterator;
import java.util.Set;

/**
 * @author sgw
 * @DATE 20200625
 */
public class FastJsonTest {

    public static void main(String[] args) {
        String jsonData = "{\n" +
                "\t\"user1\": {\n" +
                "\t\t\"username\": \"張三\",\n" +
                "\t\t\"age\": 21\n" +
                "\t},\n" +
                "\t\"user2\": {\n" +
                "\t\t\"username\": \"Tom\",\n" +
                "\t\t\"age\": 39\n" +
                "\t},\n" +
                "\t\"user3\": {\n" +
                "\t\t\"username\": \"李四\",\n" +
                "\t\t\"age\": 43\n" +
                "\t}\n" +
                "}";
        //先將這條數據解析爲JSONObject
        JSONObject jsonObject = JSONObject.parseObject(jsonData);
        //我們需要得到user,才能得到它對應的內部json
        Set<String> jsonSet = jsonObject.keySet();
        Iterator<String> iterator = jsonSet.iterator();
        while (iterator.hasNext()){
            //通過迭代器可以取到外部json的key
            String json = iterator.next();
            //取得內部json字符串
            String string = jsonObject.getString(json);
            //將內部json字符串解析爲object對象
            JSONObject inJson = JSONObject.parseObject(string);
            //通過score,得到value值
            String name = inJson.getString("username");
            String age = inJson.getString("age");

            System.out.println(name+":"+age);
        }
    }
}

結果
在這裏插入圖片描述

3 數組格式的json數據

[
    {
		"studentName": "lily",
		"studentAge": 12
	},
	{
		"studentName": "lucy ",
		"studentAge": 15
	}
]

測試

package com.maltose.util;

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

import java.util.Map;


/**
 * @author sgw
 * @DATE 20200625
 */
public class FastJsonTest {

    public static void main(String[] args) {
        String arryJsonData="[\n" +
                "    {\n" +
                "\t\t\"studentName\": \"lily\",\n" +
                "\t\t\"studentAge\": 12\n" +
                "\t},\n" +
                "\t{\n" +
                "\t\t\"studentName\": \"lucy \",\n" +
                "\t\t\"studentAge\": 15\n" +
                "\t}\n" +
                "]";
       //需要使用的JSON的parseArray方法,將arryJsonData解析爲object類型的數組
        JSONArray jsonArray = JSON.parseArray(arryJsonData);
        for (int i = 0; i < jsonArray.size(); i++) {
            Map map =(Map) jsonArray.get(i);
            System.out.println("name:"+map.get("studentName")+" age:"+map.get("studentAge"));
        }
    }
}

結果
在這裏插入圖片描述

4 json格式裏嵌套數組

{
	"students": [{
		"studentName": "lily",
		"studentAge": 12
	}, {
		"studentName": "lucy",
		"studentAge": 15
	}],
	"class": "02",
	"school": "希望小學"
}

測試

package com.maltose.util;

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

import java.util.Map;


/**
 * @author sgw
 * @DATE 20200625
 */
public class FastJsonTest {

    public static void main(String[] args) { 
        String jsonData = "{\n" +
                "\t\"students\": [{\n" +
                "\t\t\"studentName\": \"lily\",\n" +
                "\t\t\"studentAge\": 12\n" +
                "\t}, {\n" +
                "\t\t\"studentName\": \"lucy\",\n" +
                "\t\t\"studentAge\": 15\n" +
                "\t}],\n" +
                "\t\"class\": \"02\",\n" +
                "\t\"school\": \"希望小學\"\n" +
                "}";
        Object jsonObject = JSONObject.parse(jsonData);
        Map map = (Map) JSONObject.parse(jsonData);
        //ArrayList students=(ArrayList)map.get("students");
        System.out.println("學校:" + map.get("school"));
        System.out.println("班級:" + map.get("class"));
        //將students屬性值轉換爲json格式
        String students = JSONObject.toJSONString(map.get("students"));
        //轉換爲json數組
        JSONArray jsonArray = JSON.parseArray(students);

        for (int i = 0; i < jsonArray.size(); i++) {
            Map student = (Map) jsonArray.get(i);
            System.out.println("name:" + student.get("studentName") + " age:" + student.get("studentAge"));
        }
    }
}

結果
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章