fastjson-maven
1 2 3 4 5 6
| <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.73</version> </dependency>
|
1.json字符串转对象
类型 对象= (类型)JSON.parseObject("json格式字符串", 类型.class);
2.数组json字符串转list
1 2
| ArrayList<类型> list = JSON.parseObject("json格式字符串", new TypeReference<ArrayList<类型>>() { });
|
3.格式化输出
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| 对象转成json字符串输出,并且输出的字符串是格式化的跨越多行的。 JSONObject.toJSONString(object,true);
对象转成json字符串输出,但是只输出一行。 JSONObject.toJSONString(object);
给类配置一个toString方法,使得调用toString方法的时候,输出的是多行的格式化后的字符串,方面查看 public String toString() { return JSONObject.fromObject(this).toString(4); }
把一个JSON字符串进行格式化输出,逻辑就是先转换成对象,再输出。 Stirng content = json字符串 Strings=JSON.toJSONString(JSONObject.parseObject(content),true);
|
4.HTTP接口返回JSON格式字符串,不封装对象,将内部的对象数据转Map
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
| import com.alibaba.fastjson.JSON;
public static void main(String[] args) { String str = "{\n" + " \"status\": \"1\",\n" + " \"info\": \"OK\",\n" + " \"infocode\": \"10000\",\n" + " \"count\": \"1\",\n" + " \"geocodes\": [\n" + " {\n" + " \"formatted_address\": \"北京市朝阳区阜通东大街|6号\",\n" + " \"country\": \"中国\",\n" + " \"province\": \"北京市\",\n" + " \"citycode\": \"010\",\n" + " \"city\": \"北京市\",\n" + " \"district\": \"朝阳区\",\n" + " \"township\": [],\n" + " \"neighborhood\": { \n" + " },\n" + " \"building\": { \n" + " },\n" + " \"adcode\": \"110105\",\n" + " \"street\": \"阜通东大街\",\n" + " \"number\": \"6号\",\n" + " \"location\": \"116.483038,39.990633\",\n" + " \"level\": \"门牌号\"\n" + " }\n" + " ]\n" + "}"; Map maps = (Map) JSON.parse(str); List<Map> geocodes = (List<Map>) maps.get("geocodes"); for (Map<String,Object> gencode : geocodes) { Object citycode = gencode.get("citycode"); System.out.println(citycode); } }
|