package com.titizz.jsonparser; import com.titizz.jsonparser.model.JsonArray; import com.titizz.jsonparser.model.JsonObject; import org.apache.http.client.fluent.Request; import org.apache.http.client.fluent.Response; import org.apache.http.message.BasicNameValuePair; import org.junit.Test; import java.io.IOException; import java.nio.charset.Charset; import java.nio.file.Files; import java.nio.file.Paths; import java.util.ArrayList; import java.util.List; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; /** * Created by code4wt on 17/9/1. */ public class JSONParserTest { @Test public void fromJSON() throws Exception { String path = this.getClass().getResource("/music.json").getFile(); String json = new String(Files.readAllBytes(Paths.get(path)), "utf-8"); // String json = getJSON(); JSONParser jsonParser = new JSONParser(); JsonObject jsonObject = (JsonObject) jsonParser.fromJSON(json); System.out.println(jsonObject); JsonObject playlist = jsonObject.getJsonObject("playlist"); assertEquals(52, playlist.get("commentCount")); assertEquals(19208468137575293L, playlist.get("coverImgId")); assertEquals("2017年八月最热新歌TOP50", playlist.get("name")); assertFalse((Boolean) playlist.get("highQuality")); JsonArray trackIds = playlist.getJsonArray("trackIds"); assertEquals(50, trackIds.size()); JsonObject trackId = trackIds.getJsonObject(7); assertEquals(499274374, trackId.get("id")); assertEquals(14, trackId.get("v")); JsonArray tracks = playlist.getJsonArray("tracks"); JsonObject track3 = tracks.getJsonObject(3); assertEquals("带你去旅行", track3.get("name")); assertEquals(4, track3.get("v")); JsonObject track17 = tracks.getJsonObject(17); assertEquals("EVERYDAY", track17.get("name")); assertEquals(null, track17.get("a")); assertEquals(5619229, track17.get("mv")); } @Test public void fromJSON1() throws Exception { String json = "{\"a\": 1, \"b\": \"b\", \"c\": {\"a\": 1, \"b\": null, \"d\": [0.1, \"a\", 1,2, 123, 1.23e+10, true, false, null]}}"; JSONParser jsonParser = new JSONParser(); JsonObject jsonObject = (JsonObject) jsonParser.fromJSON(json); System.out.println(jsonObject); assertEquals(1, jsonObject.get("a")); assertEquals("b", jsonObject.get("b")); JsonObject c = jsonObject.getJsonObject("c"); assertEquals(null, c.get("b")); JsonArray d = c.getJsonArray("d"); assertEquals(0.1, d.get(0)); assertEquals("a", d.get(1)); assertEquals(123, d.get(4)); assertEquals(1.23e+10, d.get(5)); assertTrue((Boolean) d.get(6)); assertFalse((Boolean) d.get(7)); assertEquals(null, d.get(8)); } @Test public void fromJSON2() throws Exception { String json = "[[1,2,3,\"\u4e2d\"]]"; JSONParser jsonParser = new JSONParser(); JsonArray jsonArray = (JsonArray) jsonParser.fromJSON(json); System.out.println(jsonArray); } @Test public void beautifyJSON() throws Exception { String json = "{\"name\": \"狄仁杰\", \"type\": \"射手\", \"ability\":[\"六令追凶\",\"逃脱\",\"王朝密令\"],\"history\":{\"DOB\":630,\"DOD\":700,\"position\":\"宰相\",\"dynasty\":\"唐朝\"}}"; System.out.println("原 JSON 字符串:"); System.out.println(json); System.out.println("\n"); System.out.println("美化后的 JSON 字符串:"); JSONParser jsonParser = new JSONParser(); JsonObject drj = (JsonObject) jsonParser.fromJSON(json); System.out.println(drj); } private String getJSON() throws IOException { String url = "http://music.163.com/weapi/v3/playlist/detail"; List<BasicNameValuePair> params = new ArrayList<>(); params.add(new BasicNameValuePair("params", "kJMudgZJvK8p8STuuxRpkUvO71Enw4C9y91PBkVTv2SMVnWG30eDKK1iAPcXnEah")); params.add(new BasicNameValuePair("encSecKey", "d09b0b95b7d5b4e68aa7a16d6177d3f00a78bfa013ba59f309d41f18a2b4ea066cdea7863866b6283f403ddcd3bfb51f73f8ad3c6818269ceabff934a645196faf7a9aae0edde6e232b279fd495140e6252503291cf819eabbd9f3373648775201a70f179b7981d627257d3bba5a5e1b99d0732ce3e898db3614d82bcbe1a6a8")); Response response = Request.Post(url) .bodyForm(params) .execute(); return response.returnContent().asString(Charset.forName("utf-8")); } }