当前位置: 首页 > 工具软件 > Gson > 使用案例 >

Gson和JsonObject

顾高翰
2023-12-01
  1. json介绍:http://json.org/json-zh.html
    • JSON是轻量级的数据交换格式(常用于网络传输如http等);
    • 构建于两种结构:key/value;值的有序列表(数组、list等);
  2. 在java中实现对象与json的装换:Gson、JsonObject、fastjson、Jackson
      • JsonObject:  依赖较多,对于复类型的转换有缺陷;使用简单;
        • json-lib主页:http://json-lib.sourceforge.net/
        • json-lib是beans、collections、maps、java、arrays、xml与json相互转换的包;
        • JsonObject API:  http://resources.arcgis.com/en/help/arcobjects-java/api/arcobjects/com/esri/arcgis/server/json/JSONObject.html
      • Gson:https://github.com/google/gson
        • Gson可以在不注解源码的基础上使用;允许自定义对象的表现形式(驼峰式,首字母大写,下划线等)(@SerializedName);
        • Gson提供了fromJson()和toJson()两个直接用于解析和生成Json的方法,前者实现反序列化,后者实现序列化。同时每个方法都提供了重载方法;
        • @SerializedName注解:PHP和js在命名时一般采用下划线风格,Java中一般采用驼峰式,Gson在序列化和反序列化时需要使用反射(注解使用情况很多),通过@SerializedName实现json中key的表现形式(可同时存在多种形式);
        • Gson使用泛型:对于json字符串,使用Gson解析时,可以使用数组和List,而List对于增删比较方便,使用较多。
          • 使用数组
          • Gson gson = new Gson();
            		String jsonArray = "[\"JAVA\",\"PYTHON\",\"SHELL\"]";
            		String[] strs = gson.fromJson(jsonArray, String[].class);

          • 在使用List时,不能直接将String[].class替换为List<String>.class,因为对于java来说,存在泛型擦除,对个有着不同类型的字节码文件只有List.class。Gson提供了TypeToken来实现对泛型的支持,TypeToken的构造方法是protected。
            		Gson gson = new Gson();
            		String jsonArray = "[\"JAVA\",\"PYTHON\",\"SHELL\"]";
            		List<String> strList = gson.fromJson(jsonArray, new TypeToken<List<String>>(){}.getType());
          • 		
            Gson gson = new Gson();
            		gson.toJson(Object);
            		gson.fromJson(Reader, Class);
            		gson.fromJson(String, Class);
            		gson.fromJson(Reader, Type);
            		gson.fromJson(String, Type);
            
            
            
            
                       
                       
              
              
              
              
              
              
              
              
            • 解析: http://www.jianshu.com/p/fc5c9cdf3aab(各种注解的使用);http://www.jianshu.com/p/e740196225a4
            • Gson API : http://www.javadoc.io/doc/com.google.code.gson/gson/2.8.1
                           类似资料: