因爲在實際工做中使用fastjson解析嵌套map的場景很是多,因此在此備忘一下:java
引入阿里的fastjson的pom:json
<dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.15</version> </dependency>
一個比較複雜的json例子:測試
{ "actId": "1800025", "originCode": 1, "role": "TEACHER", "time": 1471077017804, "userId": "1111", "userName": "測試教師", "userIcon": "xyz", "userIp": "1.1.1.1", "countyId": "370105", "countyName": "天橋區", "schoolId": "1234", "schoolName": "測試小學", "data": { "subjectId": "020", "subjectName": "數學", "uploadFileList": [ { "teachFileType": "1", "custom": "xtz" }, { "teachFileType": "1" } ] } }
使用fastjson的解析代碼:code
import com.alibaba.fastjson.JSON; import java.util.List; import java.util.Map; /** * Created by Administrator on 2016/8/12. */ public class ParserJson { /*** * * @param map 須要打印的Map結構 */ public static void showMap(Map<String,Object> map){ for(Map.Entry<String,Object> kv:map.entrySet()){ System.out.println(kv.getKey()+" "+kv.getValue()); } } public static void main(String[] args) throws Exception { String json="{\"actId\":\"2300003\",\"originCode\":1,\"role\":\"TEACHER\"" + ",\"time\":1470126407000,\"userId\":\"1111\",\"userName\":\"測試教師\",\"userIcon\":\"xyz\",\"userIp\":\"1.1.1.1\",\"countyId\":\"370105\",\"countyName\":\"天橋區\",\"schoolId\":\"1234\",\"schoolName\":\"測試小學\",\"data\":{\"subjectId\":\"020\",\"subjectName\":\"數學\"," + "\"uploadFileList\":[{\"teachFileType\":\"1\"},{\"teachFileType\":\"1\",\"custom\":\"xt\"},{\"teachFileType\":\"1\"}]}}"; Map<String,Object> map=(Map)JSON.parse(json); System.out.println("打印第一層map"); showMap(map); Map<String,Object> dataMap=(Map<String, Object>) map.get("data"); System.out.println("打印第二層map"); showMap(dataMap); System.out.println("打印第三層list+map"); List<Map<String,Object>> fileList= (List<Map<String, Object>>) dataMap.get("uploadFileList"); for(Map<String,Object> soj:fileList){ System.out.println(soj); Map<String,Object> detailData=soj; showMap(detailData); System.out.println("----------------------------------------"); } } }
解析結果:get
ParserJson 打印第一層map role TEACHER data {"uploadFileList":[{"teachFileType":"1"},{"custom":"xt","teachFileType":"1"},{"teachFileType":"1"}],"subjectId":"020","subjectName":"數學"} actId 2300003 userName 測試教師 userId 1111 countyId 370105 schoolId 1234 userIp 1.1.1.1 originCode 1 time 1470126407000 userIcon xyz schoolName 測試小學 countyName 天橋區 打印第二層map uploadFileList [{"teachFileType":"1"},{"custom":"xt","teachFileType":"1"},{"teachFileType":"1"}] subjectId 020 subjectName 數學 打印第三層list+map {"teachFileType":"1"} teachFileType 1 ---------------------------------------- {"custom":"xt","teachFileType":"1"} custom xt teachFileType 1 ---------------------------------------- {"teachFileType":"1"} teachFileType 1 ---------------------------------------- Process finished with exit code 0