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.     }   



    代码调用

  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 json解析工具的更多相关文章

  1. JSON解析工具比较,主要GSON和FastJSON

    JSON解析工具比较,主要GSON和FastJSON 一 .各个JSON技术的简介和优劣 1.json-lib json-lib最开始的也是应用最广泛的json解析工具,json-lib 不好的地方确 ...

  2. [转] 各种Json解析工具比较 - json-lib/Jackson/Gson/FastJson

    JSON技术的调研报告 一 .各个JSON技术的简介和优劣1.json-libjson-lib最开始的也是应用最广泛的json解析工具,json-lib 不好的地方确实是依赖于很多第三方包,包括com ...

  3. Json解析工具Jackson(使用注解)

    原文http://blog.csdn.net/nomousewch/article/details/8955796 接上一篇文章Json解析工具Jackson(简单应用),jackson在实际应用中给 ...

  4. JSON 解析工具的封装(Java)

    JSON 解析工具的封装(Java) 一直想有一个属于自己的JSON工具,今天终于弄好了..... 1.添加pom依赖包 <!--json解析--> <dependency> ...

  5. 自定义Json解析工具

    此博客为博主原创文章,转载请标明出处,维权必究:https://www.cnblogs.com/tangZH/p/10689536.html fastjson是很好用的json解析工具,只可惜项目中要 ...

  6. java后台常用json解析工具问题小结

    若排版紊乱可查看我的个人博客原文地址 java后台常用json解析工具问题小结 这里不细究造成这些问题的底层原因,只是单纯的描述我碰到的问题及对应的解决方法 jackson将java对象转json字符 ...

  7. JSON解析工具-org.json使用教程

    转自:http://www.open-open.com/lib/view/open1381566882614.html 一.简介  org.json是Java常用的Json解析工具,主要提供JSONO ...

  8. Json解析工具Jackson(使用注解)--jackson框架自定义的一些json解析注解

    Json解析工具Jackson(使用注解)--jackson框架自定义的一些json解析注解 @JsonIgnoreProperties 此注解是类注解,作用是json序列化时将Javabean中的一 ...

  9. Java:JSON解析工具-org.json

    一.简介 org.json是Java常用的Json解析工具,主要提供JSONObject和JSONArray类,现在就各个类的使用解释如下. 二.准备 1.在使用org.json之前,我们应该先从该网 ...

随机推荐

  1. js输出指定n位数的随机数的随机整数方法【转发】

    /** * Description:[输出指定n位数的随机数的随机整数] * * @param n 指定n位数 * */ function RndNum(n) { var rnd = "&q ...

  2. Autocomplete in ASP.NET MVC3自动检索并填充输入框

    1.单一产品情况下使用: public ActionResult GetStockList() { var item = _db.Stocks.ToList().Select(s =>s.Pro ...

  3. CentOS 6.4安装配置LAMP服务器

    CentOS 6.4安装配置LAMP服务器(Apache+PHP5+MySQL) 作者: 字体:[增加 减小] 类型:转载 这篇文章主要介绍了CentOS 6.4安装配置LAMP服务器(Apache+ ...

  4. IP欺骗:要虚拟很多IP的情况:在一台机上虚拟的IP跨网段的处理,可通过在服务器端添加路由来实现

    要虚拟很多IP的情况:在一台机上虚拟的IP跨网段的处理,可通过在服务器端添加路由来实现. 例: [服务器] IP:192.168.0.1 [测试机] IP:192.168.0.2 测试机上添加的虚拟 ...

  5. scala class和object,trait的区别

    Scala类 1 2 3 4 5 6 7 8 9 10 11 12 13 class Counter {   private var value = 0 // 必须初始化字段   def increm ...

  6. vim删除文件第n行到结尾、或某段内容

    1. 编辑文件 vim myShell.sh 2. 转到文件末尾 G 3. 或者转到删除内容最后的行 :set nu #显示行号,便于确定哪行 200G #光标定到200行,表示要删除n-200行的内 ...

  7. linux利器expect的使用

    1.什么是expect在做系统管理时,我们很多时候需要输入密码,例如:连接 ssh,连接ftp,那么如何能做到不输入密码,我们需要有一个工具,能代替我们实现与终端的交互,它能够代替我们实现与终端的交互 ...

  8. Object-c中block需要注意的几点问题

    1. Block定义 1) 说明: a. Block是OC中的一种数据类型,在iOS开发中被广泛使用 b. ^是Block的特有标记 c. Block的实现代码包含在{}之间 d. 大多情况下,以内联 ...

  9. 常见Web前端开发笔试题

    1.什么是web标准? WEB标准不是某一个标准,而是一系列标准的集合.网页主要由三部分组成:结构(Structure).表现(Presentation)和行为 (Behavior). 对应的标准也分 ...

  10. IOS 进阶之 WKWebView

    前言 Xcode8发布以后,编译器开始不支持IOS7,所以很多应用在适配IOS10之后都不在适配IOS7了,其中包括了很多大公司,网易新闻,滴滴出行等.因此,我们公司的应用也打算淘汰IOS7. 支持到 ...