• Json之java-Gson


    Gson-Google出品的Json处理工具,网上好评大片,先来学习一下。

    先列出网上找到的一个评价:

    Gson是目前功能最全的Json解析神器,Gson当初是为因应Google公司内部需求而由Google自行研发而来,但自从在2008年五月公开发布第一版后已被许多公司或用户应用。Gson的应用主要为toJson与fromJson两个转换函数,无依赖,不需要例外额外的jar,能够直接跑在JDK上
    而在使用这种对象转换之前需先创建好对象的类型以及其成员才能成功的将JSON字符串成功转换成相对应的对象。类里面只要有get和set方法,Gson完全可以将复杂类型的json到bean或bean到json的转换,是JSON解析的神器。

    实践的一些代码

      1 import com.google.gson.*;
      2 import com.google.gson.reflect.TypeToken;
      3 import org.junit.Test;
      4 
      5 import java.util.ArrayList;
      6 import java.util.Date;
      7 import java.util.List;
      8 
      9 public class GsonUse {
     10     /**
     11      * Gson常用场景
     12      */
     13     @Test
     14     public void useGsonCommon() {
     15         Gson gson = new Gson(); // 解析json最基础的工具类
     16         GsonBuilder gsonBuilder = new GsonBuilder();  // Gson对象构建类,可以gson对象做一些全局设置。再创建gson对象
     17         gson = gsonBuilder.create(); // 能过GsonBuilder ,生成gson对象
     18 
     19         JsonParser jsonParser = new JsonParser(); // Json解析器
     20         JsonElement jsonElement = jsonParser.parse("{}");  // 用Json解析器解析json字符串为Json元素,
     21         // JsonElement 可以是JsonObject或者JsonArray,根据实际发问转化
     22         JsonObject jsonObject = new JsonObject();
     23         jsonObject = jsonElement.getAsJsonObject();
     24         JsonArray jsonArray = new JsonArray();
     25         jsonArray = jsonArray.getAsJsonArray();
     26 
     27         User user = new User();
     28         user.setAge(12);
     29         user.setName("[123]");
     30         // bean -> json
     31         String userJson = gson.toJson(user);
     32         System.out.println(userJson);
     33         // json -> bean
     34         User u = gson.fromJson(userJson, User.class);
     35 
     36         //构造集合
     37         List<User> users = new ArrayList<User>();
     38         User u_i = null;
     39         for (int i = 0; i < 10; i++) {
     40             u_i = new User();
     41             u_i.setAge(i);
     42             u_i.setName("name" + i);
     43             users.add(u_i);
     44         }
     45         String usersJson = gson.toJson(users);
     46         System.out.println(userJson);
     47         // **********************注意:TypeToken的用法 **********************
     48         List<User> userList = gson.fromJson(usersJson, new TypeToken<List<User>>() {
     49         }.getType());
     50         // Set<User> userSet = gson.fromJson(usersJson,new TypeToken<Set<User>>(){}.getType());
     51         // Map<String,User> userMap = gson.fromJson(userJson,new TypeToken<Map<String,User>>(){}.getType());
     52         System.out.println(userList);
     53     }
     54 
     55     /**
     56      * 格式化json
     57      */
     58     @Test
     59     public void formateJson() {
     60         String jsonStr = "[{"id":"1","name":"Json技术"},{"id":"2","name":"java技术"}]";
     61         // 创建能够格式化的转出json字符串的Gson对象
     62         Gson gson = new GsonBuilder().setPrettyPrinting().create();
     63         JsonParser jsonParser = new JsonParser();
     64         JsonElement jsonElement = jsonParser.parse(jsonStr);
     65         String formatedJson = gson.toJson(jsonElement);
     66         // 将json字符串格式化输出
     67         System.out.println(formatedJson);
     68     }
     69 
     70     /**
     71      * Json属性操作:删除,添加,判断是否存在属性,修改
     72      */
     73     @Test
     74     public void jsonAttrOpt() {
     75         String jsonStr = "[{"id":"1","name":"Json技术"},{"id":"2","name":"java技术"}]";
     76         JsonParser jsonParser = new JsonParser();
     77         JsonElement jsonElement = jsonParser.parse(jsonStr);
     78         JsonArray jsonArray = jsonElement.getAsJsonArray();
     79         JsonObject jObj = jsonArray.get(0).getAsJsonObject();
     80         // 判断是否存在属性id
     81         boolean hasId = jObj.has("id");
     82         System.out.println(hasId);
     83 
     84         // 添加属性
     85         jObj.addProperty("age", 12);
     86         System.out.println(jObj);
     87         // 删除属性
     88         jObj.remove("age");
     89         System.out.println(jObj);
     90         //修改属性,先删除,再添加
     91         jObj.remove("name");
     92         jObj.addProperty("name", new Gson().toJson("[8888]"));
     93         System.out.println(jObj);
     94     }
     95 
     96     /**
     97      * 通过GsonBuilder对Gson对象做一些配置,如日期格式化等等
     98      */
     99     @Test
    100     public void gsonBuilderUse() {
    101         GsonBuilder gsonBuilder = new GsonBuilder();
    102         // 设置时间格式
    103         gsonBuilder.setDateFormat("yyyy-MM-dd hh:mm:ss");
    104         // 取消对html的转义
    105         //gsonBuilder.disableHtmlEscaping();
    106 
    107         Gson gson = gsonBuilder.create();
    108         System.out.println(gson.toJson(new Date()));
    109 
    110         System.out.println(gson.toJson("<!DOCTYPE html> <html> <head> <title></title> </head> <body> </body> </html>"));
    111 
    112         //转义输出:"u003c!DOCTYPE htmlu003e u003chtmlu003e u003cheadu003e u003ctitleu003eu003c/titleu003e u003c/headu003e u003cbodyu003e u003c/bodyu003e u003c/htmlu003e"
    113         // 不转义输出: "<!DOCTYPE html> <html> <head> <title></title> </head> <body> </body> </html>"
    114 
    115     }
    116 }

    添加Gson依赖

    1         <dependency>
    2             <groupId>com.google.code.gson</groupId>
    3             <artifactId>gson</artifactId>
    4             <version>2.8.2</version>
    5         </dependency>
  • 相关阅读:
    HBase 解决HBase Client无法连接远程HBase Server问题
    HBase的介绍与安装教程(CentOS下单机版安装、hbase shell基本用法)
    SpringBoot 使用Phoenix操作HBase教程2(使用JdbcTemplate)
    HBase Phoenix的安装使用教程1(基本介绍、安装部署)
    InfluxDB时序数据库的安装使用教程2(安装部署、命令行基本用法)
    SpringBoot 使用hbaseclient操作HBase教程1(基本用法)
    SpringBoot 使用hbaseclient操作HBase教程2(过滤器Filter)
    HBase Phoenix的安装使用教程3(SCHEMA的启用、操作、关闭)
    C#遍历enum类型
    arcengine 矢量要素编辑(转载)
  • 原文地址:https://www.cnblogs.com/veryvalley/p/8058090.html
Copyright © 2020-2023  润新知