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
                          Gson是Google提供的一个用于在Java对象JSON之间进行转换的库。使用GsonJsonObject转化为class对象是一个常见的操作。以下是具体步骤: 1. **添加Gson依赖**:首先,确保你的项目中已经添加了Gson库。如果你使用Maven,可以在`pom.xml`中添加以下依赖: ```xml <dependency> <groupId>com.google.code.gson</groupId> <artifactId>gson</artifactId> <version>2.8.9</version> </dependency> ``` 2. **定义Java类**:定义一个与JSON结构匹配的Java类。例如,假设你有以下JSON: ```json { "name": "John", "age": 30 } ``` 你可以定义一个Java类如下: ```java public class Person { private String name; private int age; // Getters and setters public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } } ``` 3. **使用Gson进行转换**: ```java import com.google.gson.Gson; import com.google.gson.JsonObject; public class GsonExample { public static void main(String[] args) { Gson gson = new Gson(); String jsonString = "{\"name\":\"John\",\"age\":30}"; // 解析JSON字符串为JsonObject JsonObject jsonObject = gson.fromJson(jsonString, JsonObject.class); // 将JsonObject转换为Java对象 Person person = gson.fromJson(jsonObject, Person.class); // 输出结果 System.out.println("Name: " + person.getName()); System.out.println("Age: " + person.getAge()); } } ``` 通过以上步骤,你可以轻松地将JsonObject转化为Java对象。
                          评论 1
                          添加红包

                          请填写红包祝福语或标题

                          红包个数最小为10个

                          红包金额最低5元

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

                          抵扣说明:

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

                          余额充值