Json学习笔记(一)-利用Fastjson将String转换成Map,List和数组

一,Fastjson介绍说明

Fastjson是一个Java语言编写的JSON处理器,由阿里巴巴公司开发。
1、遵循
http://json.org标准,为其官方网站收录的参考实现之一。
2、支持JDK的各种类型,包括基本的JavaBean、Collection、Map、Date、Enum、泛型。
3、无依赖,不需要例外额外的jar,能够直接跑在JDK上。
4、开源,使用Apache License 2.0协议开源。

5、具有超高的性能,java世界里没有其他的json库能够和fastjson可相比了

二,下载和安装

       在使用FastJson API工作之前,你需要下载库(jar文件),并将其包含到类路径中。库,连同源代码和Java文档,都可以从http://mvnrepository.com/artifact/com.alibaba/fastjson下载。下载完毕后,添加FastJson -<version>.jar到类路径。对于那些偏好使用Maven管理依赖(JAR文件)的读者,添加如下依赖到pom.xml

 
  
  1. <!-- https://mvnrepository.com/artifact/com.alibaba/fastjson -->
  2. <dependency>
  3. <groupId>com.alibaba</groupId>
  4. <artifactId>fastjson</artifactId>
  5. <version>1.2.2</version>
  6. </dependency>
mvn加载本地jar包命令
 
   
  1. mvn install:install-file -DgroupId=com.alibaba -DartifactId=fastjson -Dversion=1.2.2 -Dfile=fastjson1.2.2.rar -Dpackaging=jar -DgeneratePom=true

三,提供的接口方法

Fastjson API入口类是com.alibaba.fastjson.JSON,常用的序列化操作都可以在JSON类上的静态方法直接完成。
public static final Object parse(String text);  // 把JSON文本parse为JSONObject或者JSONArray 
public static final 
JSONObject parseObject(String text);  // 把JSON文本parse成JSONObject    
public static final 
<T> T parseObject(String text, Class<T> clazz);  // 把JSON文本parse为JavaBean 
public static final 
JSONArray parseArray(String text);  // 把JSON文本parse成JSONArray 
public static final 
<T> List<T> parseArray(String text, Class<T> clazz);  //把JSON文本parse成JavaBean集合 
public static final 
String toJSONString(Object object);  // 将JavaBean序列化为JSON文本 
public static final 
String toJSONString(Object object,  boolean prettyFormat);  // 将JavaBean序列化为带格式的JSON文本 
public static final 
Object toJSON(Object javaObject); 将JavaBean转换为JSONObject或者JSONArray。

四,Fastjson使用示例

 
    
  1. import com.alibaba.fastjson.JSON;
  2. import com.alibaba.fastjson.JSONArray;
  3. import com.alibaba.fastjson.JSONObject;
  4. import java.util.List;
  5. import java.util.Map;
  6. /**
  7. * Created by hhq on 2017/7/20.
  8. */
  9. public class FastJsonTest {
  10. public static void main(String[] args){
  11. String str = "{\"name\":\"zhangsan\",\"sex\":\"1\",\"idcard\":\"44151199109095712\"}";
  12. //第一种方式
  13. Map maps = (Map) JSON.parse(str);
  14. System.out.println("这个是用JSON类来解析JSON字符串!!!");
  15. for (Object map : maps.entrySet()){
  16. System.out.println(((Map.Entry)map).getKey()+" " + ((Map.Entry)map).getValue());
  17. }
  18. //第二种方式
  19. Map mapTypes = JSON.parseObject(str);
  20. System.out.println("这个是用JSON类的parseObject来解析JSON字符串!!!");
  21. for (Object obj : mapTypes.keySet()){
  22. System.out.println("key为:"+obj+"值为:"+mapTypes.get(obj));
  23. }
  24. //第三种方式
  25. Map mapType = JSON.parseObject(str,Map.class);
  26. System.out.println("这个是用JSON类,指定解析类型,来解析JSON字符串!!!");
  27. for (Object obj : mapType.keySet()){
  28. System.out.println("key为:"+obj+"值为:"+mapType.get(obj));
  29. }
  30. //第四种方式
  31. /**
  32. * JSONObject是Map接口的一个实现类
  33. */
  34. Map json = (Map) JSONObject.parse(str);
  35. System.out.println("这个是用JSONObject类的parse方法来解析JSON字符串!!!");
  36. for (Object map : json.entrySet()){
  37. System.out.println(((Map.Entry)map).getKey()+" "+((Map.Entry)map).getValue());
  38. }
  39. //第五种方式
  40. /**
  41. * JSONObject是Map接口的一个实现类
  42. */
  43. JSONObject jsonObject = JSONObject.parseObject(str);
  44. System.out.println("这个是用JSONObject的parseObject方法来解析JSON字符串!!!");
  45. for (Object map : json.entrySet()){
  46. System.out.println(((Map.Entry)map).getKey()+" "+((Map.Entry)map).getValue());
  47. }
  48. //第六种方式
  49. /**
  50. * JSONObject是Map接口的一个实现类
  51. */
  52. Map mapObj = JSONObject.parseObject(str,Map.class);
  53. System.out.println("这个是用JSONObject的parseObject方法并执行返回类型来解析JSON字符串!!!");
  54. for (Object map: json.entrySet()){
  55. System.out.println(((Map.Entry)map).getKey()+" "+((Map.Entry)map).getValue());
  56. }
  57. String strArr = "{{\"name\":\"zhangsan\",\"sex\":\"1\",\"idcard\":\"44151199109095712\"}," +
  58. "{\"name\":\"lisi\",\"sex\":\"2\",\"idcard\":\"44151199209095712\"}}";
  59. // JSONArray.parse()
  60. System.out.println(json);
  61. String strList = "[{\"name\":\"李明\",\"age\":19},{\"name\":\"张三\",\"age\":12}]";
  62. //数组对象反序列化成集合
  63. List listPerson = JSON.parseArray(strList);
  64. for(Object item : listPerson){
  65. System.out.println(item);
  66. }
  67. //没有对象直接解析JSON对象
  68. JSONObject jobj = JSON.parseObject("{\"name\":\"李明\",\"age\":19}");
  69. System.out.printf("name:%s,age:%d\n",jobj.getString("name"),jobj.getBigInteger("age"));
  70. //没有对象直接解析JSON数组
  71. JSONArray jarr = JSON.parseArray("[{\"name\":\"李明\",\"age\":19},{\"name\":\"张三\",\"age\":12}]");
  72. for(int i=0,len=jarr.size();i<len;i++){
  73. JSONObject temp= jarr.getJSONObject(i);
  74. System.out.printf("name:%s,age:%d\n",temp.getString("name"),temp.getBigInteger("age"));
  75. }
  76. }
  77. }


猜你喜欢

转载自blog.csdn.net/hhq12/article/details/75529585