Gson和JsonObject

本文介绍了JSON的基础概念及其在网络传输中的应用,并详细对比了多种Java中实现对象与JSON转换的技术方案,重点讲解了Gson库的使用方法及注意事项。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  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
                          评论 1
                          添加红包

                          请填写红包祝福语或标题

                          红包个数最小为10个

                          红包金额最低5元

                          当前余额3.43前往充值 >
                          需支付:10.00
                          成就一亿技术人!
                          领取后你会自动成为博主和红包主的粉丝 规则
                          hope_wisdom
                          发出的红包
                          实付
                          使用余额支付
                          点击重新获取
                          扫码支付
                          钱包余额 0

                          抵扣说明:

                          1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
                          2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

                          余额充值