• Gson json解析工具


    json 解析工具 ,谷歌出品

    对象转换字符串

    1. HashMap<String,String> hashMap = new HashMap<String, String>(); 
    2.   hashMap.put("id", "1"); 
    3.   hashMap.put("name", "ca"); 
    4.   Gson gson = new Gson(); 
    5.   System.out.println(gson.toJson(hashMap));


    在对象转换字符串的时候,遇到hibernate持久化过来的对象,如果对象属性包含某个对象时,如果配置了lazy加载的话,hibernate会放置一个临时代理为这个对象属性 ,倒置  Gson在转换hibernate对象的时候报错,这里可以设置过滤掉对象中的属性代理类,自定义设置想要的输出对象属性,处理方式如下:

        GsonUtil 类
    1. package utils;   
    2.    
    3. import org.apache.commons.lang.ArrayUtils;   
    4. import com.google.gson.ExclusionStrategy;   
    5. import com.google.gson.FieldAttributes;   
    6.    
    7. public class GsonUtil implements ExclusionStrategy {   
    8.     private Class<?> target;   
    9.     private String[] fields;   
    10.     private Class<?>[] clazz;   
    11.     private boolean reverse;   
    12.    
    13.     public GsonUtil(Class<?> target) {   
    14.         super();   
    15.         this.target = target;   
    16.     }   
    17.    
    18.     public boolean shouldSkipClass(Class<?> class1) {   
    19.         return false;   
    20.     }   
    21.    
    22.     public boolean shouldSkipField(FieldAttributes fieldattributes) {   
    23.         Class<?> owner = fieldattributes.getDeclaringClass();   
    24.         Class<?> c = fieldattributes.getDeclaredClass();   
    25.         String f = fieldattributes.getName();   
    26.         boolean isSkip = false;   
    27.            
    28.         if (owner == target) {   
    29.             if (ArrayUtils.contains(fields, f)) {   
    30.                
    31.                 isSkip = true;   
    32.             }   
    33.             if (ArrayUtils.contains(clazz, c)) {   
    34.              
    35.                 isSkip = true;   
    36.             }   
    37.             if (reverse) {   
    38.                 isSkip = !isSkip;   
    39.             }   
    40.         }   
    41.    
    42.         return isSkip;   
    43.     }   
    44.    
    45.     public void setFields(String[] fields) {   
    46.         this.fields = fields;   
    47.     }   
    48.    
    49.     public void setClazz(Class<?>[] clazz) {   
    50.         this.clazz = clazz;   
    51.     }   
    52.    
    53.     public void setReverse(boolean reverse) {   
    54.         this.reverse = reverse;   
    55.     }   
    56. } 



        代码调用

    1. Dog dog = new Dog(); 
    2.   dog.setAge("12"); 
    3.   dog.setId("454"); 
    4.   dog.setName("白狗"); 
    5.   GsonUtil gsonUtil = new GsonUtil(Dog.class); 
    6.   GsonBuilder builder = new GsonBuilder(); 
    7.   gsonUtil.setFields(new String[]{"id","name"}); 
    8.   gsonUtil.setReverse(true); 
    9.   builder.addSerializationExclusionStrategy(gsonUtil); 
    10.   Gson gson = builder.create(); 
    11.   System.out.println(gson.toJson(dog));



    字符串转对象


    1. Gson gson = new Gson(); 
    2.   String jsonstr="{"id":"454","name":"白狗"}"; 
    3.   System.out.println(gson.fromJson(jsonstr, Dog.class));
    4. //在转换为泛型类的时候 需如下转换
    5. list = gson.fromJson(result, new TypeToken<List<Object[]>>() {}.getType())




    附件:

    gson-2.2.2.jar

    附件列表

    • 相关阅读:
      postgresql 在linux下导出数据
      第一次linux下安装nginx记录
      第一次搭建redis集群
      手动mvn install指令向maven本地仓库安装jar包
      windows10下Kafka环境搭建
      在win10环境下搭建 solr 开发环境
      git 常用命令
      生成文件夹的树结构信息
      List集合和JSON互转工具类
      Cmd命令 查看端口被占用
    • 原文地址:https://www.cnblogs.com/signheart/p/6595598.html
    Copyright © 2020-2023  润新知