精华内容
下载资源
问答
  • maven导入Gson

    万次阅读 2018-01-19 14:39:09
    Gson是google开发的一个开源Json解析库,使用十分的方便,在maven当中导入的方式为: dependency> groupId>com.google.code.gsongroupId> artifactId>gsonartifactId> version>2.8.2version> dependency>  其中...

    Gson是google开发的一个开源Json解析库,使用十分的方便,在maven当中导入的方式为:

    1. <dependency>  
    2.     <groupId>com.google.code.gson</groupId>  
    3.     <artifactId>gson</artifactId>  
    4.     <version>2.8.2</version>  
    5. </dependency>  

    其中2.8.2为版本号,最新版本以及源码可以在官方的github上查看:https://github.com/google/gson


    这里给出最简单的Gson的使用方法:


    Object obj = new Object();

    //Object转Json字符串

    String obstr = new Gson().toJson(object);

    //Json字符串转Object

    Object object = new Gson().fromJson(obstr);

    展开全文
  • om.google.code.gson/gson/2.6.2 Gson maven依赖 java 开发包
  • 我们要使用json和java使用,我们需要使用到一个第三方的包。它就是gson.jar。
  • 作者:ymony 来源:CSDN 原文: ... 具体错误如下: ...新添加Gson依赖jar包出现错误,通过异常信息查询资料,猜测可能是Gson的版本问题,导致无法创建gsonBuilder,自己报错的版本是是2.3.1,于是换成了...

    作者:ymony
    来源:CSDN
    原文:https://blog.csdn.net/ymony/article/details/80455715

    具体错误如下:

    org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'gsonBuilder' defined in class path resource [org/springframework/boot/autoconfigure/gson/GsonAutoConfiguration.class]:
     Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [com.google.gson.GsonBuilder]: Factory method 'gsonBuilder' threw 
     exception; nested exception is java.lang.BootstrapMethodError: java.lang.NoSuchMethodError: com.google.gson.GsonBuilder.setLenient()Lcom/google/gson/GsonBuilder;
    at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:587) ~[spring-beans-5.0.5.RELEASE.jar:5.0.5.RELEASE]
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateUsingFactoryMethod(AbstractAutowireCapableBeanFactory.java:1250) ~[spring-beans-5.0.5.RELEASE.jar:5.0.5.RELEASE]
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1099) ~[spring-beans-5.0.5.RELEASE.jar:5.0.5.RELEASE]
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:541) ~[spring-beans-5.0.5.RELEASE.jar:5.0.5.RELEASE]
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:501) ~[spring-beans-5.0.5.RELEASE.jar:5.0.5.RELEASE]
    at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:317) ~[spring-beans-5.0.5.RELEASE.jar:5.0.5.RELEASE]
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:228) ~[spring-beans-5.0.5.RELEASE.jar:5.0.5.RELEASE]
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:315) ~[spring-beans-5.0.5.RELEASE.jar:5.0.5.RELEASE]
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:199) ~[spring-beans-5.0.5.RELEASE.jar:5.0.5.RELEASE]
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:760) ~[spring-beans-5.0.5.RELEASE.jar:5.0.5.RELEASE]
    at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:869) ~[spring-context-5.0.5.RELEASE.jar:5.0.5.RELEASE]
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:550) ~[spring-context-5.0.5.RELEASE.jar:5.0.5.RELEASE]
    at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:140) ~[spring-boot-2.0.1.RELEASE.jar:2.0.1.RELEASE]
    at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:759) [spring-boot-2.0.1.RELEASE.jar:2.0.1.RELEASE]
    at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:395) [spring-boot-2.0.1.RELEASE.jar:2.0.1.RELEASE]
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:327) [spring-boot-2.0.1.RELEASE.jar:2.0.1.RELEASE]
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:1255) [spring-boot-2.0.1.RELEASE.jar:2.0.1.RELEASE]
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:1243) [spring-boot-2.0.1.RELEASE.jar:2.0.1.RELEASE]
    at com.eparking.eparkingconn.EparkingconnApplication.main(EparkingconnApplication.java:12) [classes/:na]
    
    Caused by: org.springframework.beans.BeanInstantiationException: Failed to instantiate [com.google.gson.GsonBuilder]: Factory method 'gsonBuilder' threw exception; nested exception is java.lang.BootstrapMethodError: java.lang.NoSuchMethodError: com.google.gson.GsonBuilder.setLenient()Lcom/google/gson/GsonBuilder;
    at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:185) ~[spring-beans-5.0.5.RELEASE.jar:5.0.5.RELEASE]
    at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:579) ~[spring-beans-5.0.5.RELEASE.jar:5.0.5.RELEASE]
    ... 18 common frames omitted
    
    Caused by: java.lang.BootstrapMethodError: java.lang.NoSuchMethodError: com.google.gson.GsonBuilder.setLenient()Lcom/google/gson/GsonBuilder;
    at org.springframework.boot.autoconfigure.gson.GsonAutoConfiguration$StandardGsonBuilderCustomizer.customize(GsonAutoConfiguration.java:96) ~[spring-boot-autoconfigure-2.0.1.RELEASE.jar:2.0.1.RELEASE]
    at org.springframework.boot.autoconfigure.gson.GsonAutoConfiguration.lambda$gsonBuilder$0(GsonAutoConfiguration.java:49) ~[spring-boot-autoconfigure-2.0.1.RELEASE.jar:2.0.1.RELEASE]
    at java.util.ArrayList.forEach(ArrayList.java:1255) ~[na:1.8.0_151]
    at org.springframework.boot.autoconfigure.gson.GsonAutoConfiguration.gsonBuilder(GsonAutoConfiguration.java:49) ~[spring-boot-autoconfigure-2.0.1.RELEASE.jar:2.0.1.RELEASE]
    at org.springframework.boot.autoconfigure.gson.GsonAutoConfiguration$$EnhancerBySpringCGLIB$$a3726d62.CGLIB$gsonBuilder$2(<generated>) ~[spring-boot-autoconfigure-2.0.1.RELEASE.jar:2.0.1.RELEASE]
    at org.springframework.boot.autoconfigure.gson.GsonAutoConfiguration$$EnhancerBySpringCGLIB$$a3726d62$$FastClassBySpringCGLIB$$98432a4b.invoke(<generated>) ~[spring-boot-autoconfigure-2.0.1.RELEASE.jar:2.0.1.RELEASE]
    at org.springframework.cglib.proxy.MethodProxy.invokeSuper(MethodProxy.java:228) ~[spring-core-5.0.5.RELEASE.jar:5.0.5.RELEASE]
    at org.springframework.context.annotation.ConfigurationClassEnhancer$BeanMethodInterceptor.intercept(ConfigurationClassEnhancer.java:361) ~[spring-context-5.0.5.RELEASE.jar:5.0.5.RELEASE]
    at org.springframework.boot.autoconfigure.gson.GsonAutoConfiguration$$EnhancerBySpringCGLIB$$a3726d62.gsonBuilder(<generated>) ~[spring-boot-autoconfigure-2.0.1.RELEASE.jar:2.0.1.RELEASE]
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_151]
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:1.8.0_151]
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.8.0_151]
    at java.lang.reflect.Method.invoke(Method.java:498) ~[na:1.8.0_151]
    at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:154) ~[spring-beans-5.0.5.RELEASE.jar:5.0.5.RELEASE]
    ... 19 common frames omitted
    
    Caused by: java.lang.NoSuchMethodError: com.google.gson.GsonBuilder.setLenient()Lcom/google/gson/GsonBuilder;
    at java.lang.invoke.MethodHandleNatives.resolve(Native Method) ~[na:1.8.0_151]
    at java.lang.invoke.MemberName$Factory.resolve(MemberName.java:975) ~[na:1.8.0_151]
    at java.lang.invoke.MemberName$Factory.resolveOrFail(MemberName.java:1000) ~[na:1.8.0_151]
    at java.lang.invoke.MethodHandles$Lookup.resolveOrFail(MethodHandles.java:1394) ~[na:1.8.0_151]
    at java.lang.invoke.MethodHandles$Lookup.linkMethodHandleConstant(MethodHandles.java:1750) ~[na:1.8.0_151]
    at java.lang.invoke.MethodHandleNatives.linkMethodHandleConstant(MethodHandleNatives.java:477) ~[na:1.8.0_151]
    ... 33 common frames omitted
    

    启动项目时,新添加的Gson依赖jar包出现错误,通过异常信息查询资料,猜测可能是Gson的版本问题,导致无法创建gsonBuilder,自己报错的版本是是2.3.1,于是换成了https://blog.csdn.net/email_jade/article/details/72886991?utm_source=itdadao&utm_medium=referral中所提到的 2.6.2,问题解决。

    参考资料:
    https://blog.csdn.net/email_jade/article/details/72886991?utm_source=itdadao&utm_medium=referral
    https://www.cnblogs.com/shirui/p/8549144.html

    展开全文
  • org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'gsonBuilder' defined in class path resource [org/springframework/boot/autoconfigure/gson/GsonAutoConfig...

    具体错误如下:

    org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'gsonBuilder' defined in class path resource [org/springframework/boot/autoconfigure/gson/GsonAutoConfiguration.class]:
     Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [com.google.gson.GsonBuilder]: Factory method 'gsonBuilder' threw 
     exception; nested exception is java.lang.BootstrapMethodError: java.lang.NoSuchMethodError: com.google.gson.GsonBuilder.setLenient()Lcom/google/gson/GsonBuilder;
    at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:587) ~[spring-beans-5.0.5.RELEASE.jar:5.0.5.RELEASE]
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateUsingFactoryMethod(AbstractAutowireCapableBeanFactory.java:1250) ~[spring-beans-5.0.5.RELEASE.jar:5.0.5.RELEASE]
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1099) ~[spring-beans-5.0.5.RELEASE.jar:5.0.5.RELEASE]
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:541) ~[spring-beans-5.0.5.RELEASE.jar:5.0.5.RELEASE]
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:501) ~[spring-beans-5.0.5.RELEASE.jar:5.0.5.RELEASE]
    at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:317) ~[spring-beans-5.0.5.RELEASE.jar:5.0.5.RELEASE]
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:228) ~[spring-beans-5.0.5.RELEASE.jar:5.0.5.RELEASE]
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:315) ~[spring-beans-5.0.5.RELEASE.jar:5.0.5.RELEASE]
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:199) ~[spring-beans-5.0.5.RELEASE.jar:5.0.5.RELEASE]
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:760) ~[spring-beans-5.0.5.RELEASE.jar:5.0.5.RELEASE]
    at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:869) ~[spring-context-5.0.5.RELEASE.jar:5.0.5.RELEASE]
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:550) ~[spring-context-5.0.5.RELEASE.jar:5.0.5.RELEASE]
    at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:140) ~[spring-boot-2.0.1.RELEASE.jar:2.0.1.RELEASE]
    at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:759) [spring-boot-2.0.1.RELEASE.jar:2.0.1.RELEASE]
    at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:395) [spring-boot-2.0.1.RELEASE.jar:2.0.1.RELEASE]
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:327) [spring-boot-2.0.1.RELEASE.jar:2.0.1.RELEASE]
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:1255) [spring-boot-2.0.1.RELEASE.jar:2.0.1.RELEASE]
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:1243) [spring-boot-2.0.1.RELEASE.jar:2.0.1.RELEASE]
    at com.eparking.eparkingconn.EparkingconnApplication.main(EparkingconnApplication.java:12) [classes/:na]
    
    Caused by: org.springframework.beans.BeanInstantiationException: Failed to instantiate [com.google.gson.GsonBuilder]: Factory method 'gsonBuilder' threw exception; nested exception is java.lang.BootstrapMethodError: java.lang.NoSuchMethodError: com.google.gson.GsonBuilder.setLenient()Lcom/google/gson/GsonBuilder;
    at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:185) ~[spring-beans-5.0.5.RELEASE.jar:5.0.5.RELEASE]
    at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:579) ~[spring-beans-5.0.5.RELEASE.jar:5.0.5.RELEASE]
    ... 18 common frames omitted
    
    Caused by: java.lang.BootstrapMethodError: java.lang.NoSuchMethodError: com.google.gson.GsonBuilder.setLenient()Lcom/google/gson/GsonBuilder;
    at org.springframework.boot.autoconfigure.gson.GsonAutoConfiguration$StandardGsonBuilderCustomizer.customize(GsonAutoConfiguration.java:96) ~[spring-boot-autoconfigure-2.0.1.RELEASE.jar:2.0.1.RELEASE]
    at org.springframework.boot.autoconfigure.gson.GsonAutoConfiguration.lambda$gsonBuilder$0(GsonAutoConfiguration.java:49) ~[spring-boot-autoconfigure-2.0.1.RELEASE.jar:2.0.1.RELEASE]
    at java.util.ArrayList.forEach(ArrayList.java:1255) ~[na:1.8.0_151]
    at org.springframework.boot.autoconfigure.gson.GsonAutoConfiguration.gsonBuilder(GsonAutoConfiguration.java:49) ~[spring-boot-autoconfigure-2.0.1.RELEASE.jar:2.0.1.RELEASE]
    at org.springframework.boot.autoconfigure.gson.GsonAutoConfiguration$$EnhancerBySpringCGLIB$$a3726d62.CGLIB$gsonBuilder$2(<generated>) ~[spring-boot-autoconfigure-2.0.1.RELEASE.jar:2.0.1.RELEASE]
    at org.springframework.boot.autoconfigure.gson.GsonAutoConfiguration$$EnhancerBySpringCGLIB$$a3726d62$$FastClassBySpringCGLIB$$98432a4b.invoke(<generated>) ~[spring-boot-autoconfigure-2.0.1.RELEASE.jar:2.0.1.RELEASE]
    at org.springframework.cglib.proxy.MethodProxy.invokeSuper(MethodProxy.java:228) ~[spring-core-5.0.5.RELEASE.jar:5.0.5.RELEASE]
    at org.springframework.context.annotation.ConfigurationClassEnhancer$BeanMethodInterceptor.intercept(ConfigurationClassEnhancer.java:361) ~[spring-context-5.0.5.RELEASE.jar:5.0.5.RELEASE]
    at org.springframework.boot.autoconfigure.gson.GsonAutoConfiguration$$EnhancerBySpringCGLIB$$a3726d62.gsonBuilder(<generated>) ~[spring-boot-autoconfigure-2.0.1.RELEASE.jar:2.0.1.RELEASE]
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_151]
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:1.8.0_151]
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.8.0_151]
    at java.lang.reflect.Method.invoke(Method.java:498) ~[na:1.8.0_151]
    at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:154) ~[spring-beans-5.0.5.RELEASE.jar:5.0.5.RELEASE]
    ... 19 common frames omitted
    
    Caused by: java.lang.NoSuchMethodError: com.google.gson.GsonBuilder.setLenient()Lcom/google/gson/GsonBuilder;
    at java.lang.invoke.MethodHandleNatives.resolve(Native Method) ~[na:1.8.0_151]
    at java.lang.invoke.MemberName$Factory.resolve(MemberName.java:975) ~[na:1.8.0_151]
    at java.lang.invoke.MemberName$Factory.resolveOrFail(MemberName.java:1000) ~[na:1.8.0_151]
    at java.lang.invoke.MethodHandles$Lookup.resolveOrFail(MethodHandles.java:1394) ~[na:1.8.0_151]
    at java.lang.invoke.MethodHandles$Lookup.linkMethodHandleConstant(MethodHandles.java:1750) ~[na:1.8.0_151]
    at java.lang.invoke.MethodHandleNatives.linkMethodHandleConstant(MethodHandleNatives.java:477) ~[na:1.8.0_151]
    ... 33 common frames omitted
    

    启动项目时,新添加的Gson依赖jar包出现错误,通过异常信息查询资料,猜测可能是Gson的版本问题,导致无法创建gsonBuilder,自己原来的版本是2.2.4,于是换成了https://blog.csdn.net/email_jade/article/details/72886991?utm_source=itdadao&utm_medium=referral中所提到的2.6.2,问题解决。

    参考资料:https://blog.csdn.net/email_jade/article/details/72886991?utm_source=itdadao&utm_medium=referral
    https://www.cnblogs.com/shirui/p/8549144.html

    展开全文
  • Gson [Maven依赖] 和一些简单的例子

    万次阅读 2018-09-29 10:36:05
    Mavne依赖 &lt;dependency&gt; &lt;groupId&gt;...gson&lt;/artifactId&gt; &lt;version&gt;2.2.4&lt;/version&gt; &lt;/dependency&gt; G

    Mavne依赖

    <dependency>
       <groupId>com.google.code.gson</groupId>
       <artifactId>gson</artifactId>
       <version>2.2.4</version>
    </dependency>
    

    Gson jar包下载地址: http://repo1.maven.org/maven2/com/google/code/gson/gson/2.8.0/  

     

    Gson的实例化方式:

    1:Gson gson=newGson();

    2:通过GsonBuilder 可以配置多种选项

     

    [java] view plain copy

    print?在CODE上查看代码片派生到我的代码片

    1. gson = new GsonBuilder()  
    2.                    .setLenient()// json宽松  
    3.                    .enableComplexMapKeySerialization()//支持Map的key为复杂对象的形式  
    4.                    .serializeNulls() //智能null  
    5.                    .setPrettyPrinting()// 调教格式  
    6.                    .disableHtmlEscaping() //默认是GSON把HTML 转义的  
    7.                    .create();  

    Gson的基本用法:

     JavaBean转换Json字符串

     gson提供 publicString toJson(Object src) 方法可以将对象转换成jsonStr

      

    [java] view plain copy

    print?在CODE上查看代码片派生到我的代码片

    1. package com.xuan.gson;  
    2.   
    3. import com.google.gson.Gson;  
    4.   
    5. /** 
    6.  * @author xuanyouwu 
    7.  * @email xuanyouwu@163.com 
    8.  * @time 2016-05-18 10:39 
    9.  */  
    10. public class GsonTest1 {  
    11.     public static class Student {  
    12.         private String name;  
    13.         private int age;  
    14.   
    15.         //省略setter getter equals  
    16.     }  
    17.   
    18.     private static void log(String msg) {  
    19.         System.out.println(msg);  
    20.     }  
    21.   
    22.   
    23.     public static void main(String[] args) throws Exception {  
    24.         Gson gson = new Gson();  
    25.         Student student = new Student();  
    26.         student.setName("xuanyouwu");  
    27.         student.setAge(26);  
    28.         String jsonStr = gson.toJson(student);  
    29.         log("---->javabean convert jsonStr:" + jsonStr);  
    30.     }  
    31.   
    32. }  

    运行结果:

    ---->javabean convert jsonStr:{"name":"xuanyouwu","age":26}

     

     

     

        List Map转Json字符串

    [java] view plain copy

    print?在CODE上查看代码片派生到我的代码片

    1. package com.xuan.gson;  
    2.   
    3. import com.google.gson.Gson;  
    4.   
    5. import java.util.Arrays;  
    6. import java.util.HashMap;  
    7. import java.util.List;  
    8. import java.util.Map;  
    9.   
    10. /** 
    11.  * @author xuanyouwu 
    12.  * @email xuanyouwu@163.com 
    13.  * @time 2016-05-18 10:39 
    14.  */  
    15. public class GsonTest1 {  
    16.   
    17.     private static void log(String msg) {  
    18.         System.out.println(msg);  
    19.     }  
    20.   
    21.   
    22.     public static void main(String[] args) throws Exception {  
    23.         Gson gson = new Gson();  
    24.   
    25.         List<String> list = Arrays.asList("1", "a", "3", "rt", "5");  
    26.         log("---->list convert jsonStr:" + gson.toJson(list));  
    27.   
    28.         Map<String, Object> content = new HashMap<String, Object>();  
    29.         content.put("name", "xuanyouwu");  
    30.         content.put("age", "26");  
    31.         log("---->map convert jsonStr:" + gson.toJson(content));  
    32.     }  
    33.   
    34. }  

    [java] view plain copy

    print?在CODE上查看代码片派生到我的代码片

    1. 运行结果:  

    [java] view plain copy

    print?在CODE上查看代码片派生到我的代码片

    1. ---->list convert jsonStr:["1","a","3","rt","5"]  
    2. ---->map convert jsonStr:{"name":"xuanyouwu","age":"26"}  

     

           Json字符串转JavaBean

    [java] view plain copy

    print?在CODE上查看代码片派生到我的代码片

    1. String studentJsonStr="{\"name\":\"xuanyouwu\",\"age\":26}";  
    2.   
    3. Student student1 = gson.fromJson(studentJsonStr, Student.class);  
    4. log("------->json convert JavaBean:"+student1);  


          运行结果:

                ------->json convert JavaBean:Student{name='xuanyouwu', age=26}

     

     

       Json字符串转List

    [java] view plain copy

    print?在CODE上查看代码片派生到我的代码片

    1. String listJsonStr="[\"1\",\"a\",\"3\",\"rt\",\"5\"]";  

    [java] view plain copy

    print?在CODE上查看代码片派生到我的代码片

    1. Type type = new TypeToken<ArrayList<String>>() {  
    2. }.getType();  
    3. ArrayList<String> sList=gson.fromJson(listJsonStr, type);  
    4. log("------->json convert List:"+sList);  

    [java] view plain copy

    print?在CODE上查看代码片派生到我的代码片

    1. 运行结果:  

    [java] view plain copy

    print?在CODE上查看代码片派生到我的代码片

    1. ------->json convert List:[1, a, 3, rt, 5]  

    [java] view plain copy

    print?在CODE上查看代码片派生到我的代码片

    1. </pre><pre code_snippet_id="1687762" snippet_file_name="blog_20160518_11_939636" name="code" class="java">  Gson封装的类型体系  

    [java] view plain copy

    print?在CODE上查看代码片派生到我的代码片

    1.    Gson里面有一个非常有意思的抽象基类JsonElement,他的继承体系:  

    [java] view plain copy

    print?在CODE上查看代码片派生到我的代码片

    1. <img src="https://img-blog.csdn.net/20160518135136864?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" />  

    [java] view plain copy

    print?在CODE上查看代码片派生到我的代码片

    1.  JsonObject等同于org的JSONObject,JsonArray也类似,  

    [java] view plain copy

    print?在CODE上查看代码片派生到我的代码片

    1. JsonNull 其实就是null 字段  

    [java] view plain copy

    print?在CODE上查看代码片派生到我的代码片

    1. JsonNull jsonNull=new JsonNull();//构造方法过时,推荐INSTANCE  

    [java] view plain copy

    print?在CODE上查看代码片派生到我的代码片

    1. JsonNull jsonNull=JsonNull.INSTANCE;  
    2.   log("-----"+jsonNull);  

    [java] view plain copy

    print?在CODE上查看代码片派生到我的代码片

    1. 运行结果:  

    [java] view plain copy

    print?在CODE上查看代码片派生到我的代码片

    1. -----null  

         JsonPrimitive非常有意思,我们知道如果json转换成字符串 可能包含引号的转义,但是通过JsonPrimative我们可以获得为转义的字符串,看实例:

         

    [java] view plain copy

    print?在CODE上查看代码片派生到我的代码片

    1. package com.xuan.gson;  
    2.   
    3. import com.google.gson.JsonNull;  
    4. import com.google.gson.JsonPrimitive;  
    5.   
    6. /** 
    7.  * @author xuanyouwu 
    8.  * @email xuanyouwu@163.com 
    9.  * @time 2016-05-18 11:20 
    10.  */  
    11. public class GsonTest2 {  
    12.     private static void log(String msg) {  
    13.         System.out.println(msg);  
    14.     }  
    15.     public static void main(String[] args) throws Exception {  
    16.         String studentJsonStr="{\"name\":\"xuanyouwu\",\"age\":26}";  
    17.         log("------>studentJsonStr:"+studentJsonStr);  
    18.         JsonPrimitive jsonPrimitive=new JsonPrimitive(studentJsonStr);  
    19.         log("------>jsonPrimitive:"+jsonPrimitive);  
    20.         log("------>jsonPrimitive:"+jsonPrimitive.toString());  
    21.         log("------>jsonPrimitive:"+jsonPrimitive.getAsString());  
    22.   
    23.         JsonPrimitive jsonPrimitive2=new JsonPrimitive("this is String");  
    24.         log("------>jsonPrimitive2:"+jsonPrimitive2);  
    25.         log("------>jsonPrimitive2:"+jsonPrimitive2.toString());  
    26.         log("------>jsonPrimitive2:"+jsonPrimitive2.getAsString());  
    27.     }  
    28. }  

         运行结果:

    ------>studentJsonStr:{"name":"xuanyouwu","age":26}
    ------>jsonPrimitive:"{\"name\":\"xuanyouwu\",\"age\":26}"
    ------>jsonPrimitive:"{\"name\":\"xuanyouwu\",\"age\":26}"
    ------>jsonPrimitive:{"name":"xuanyouwu","age":26}
    ------>jsonPrimitive2:"this is String"
    ------>jsonPrimitive2:"this is String"
    ------>jsonPrimitive2:this is String

     

     

           创建JsonObject

               通过addPropert(key,value)可以向jsonObject中添加字段 跟hashMap类似

    [java] view plain copy

    print?在CODE上查看代码片派生到我的代码片

    1. JsonObject jsonObject=new JsonObject();  
    2. jsonObject.addProperty("name","xuanyouwu");  
    3. jsonObject.addProperty("age",26);  
    4. log("------>create jsonObject:"+jsonObject);  

                运行结果:

                    ------>create jsonObject:{"name":"xuanyouwu","age":26}

     

     

        创建JsonArray       

    [java] view plain copy

    print?在CODE上查看代码片派生到我的代码片

    1. JsonArray jsonElements=new JsonArray();  
    2.    jsonElements.add("a");  
    3.    jsonElements.add("b");  
    4.    jsonElements.add("c");  
    5.    jsonElements.add("d");  
    6.    log("------>create jsonArray:"+jsonElements);  

              运行结果:

              ------>create jsonArray:["a","b","c","d"]

     

     

         JsonObject 嵌套数组或者说嵌套JsonArray

               通过JsonObject的add(key,JsonElement)可以为jsonObject 添加一个数组的字段

    [java] view plain copy

    print?在CODE上查看代码片派生到我的代码片

    1. JsonObject jsonObject2=new JsonObject();  
    2. jsonObject2.addProperty("name","xuanyouwu");  
    3. jsonObject2.addProperty("age",26);  
    4. JsonArray jsonElements2=new JsonArray();  
    5. jsonElements2.add("骑车");  
    6. jsonElements2.add("打游戏");  
    7. jsonElements2.add("看电视");  
    8. jsonObject2.add("hobby",jsonElements2);  
    9. log("------>create jsonObject inner JsonArray:"+jsonObject2);  

               运行结果:

                ------>create jsonObject inner JsonArray:{"name":"xuanyouwu","age":26,"hobby":["骑车","打游戏","看电视"]}

     

     

     

    Gson注解

              在Gson中有五类注解

              

     

     

     

              重命名注解:SerializedName 

                 作用:转换关键字key,json转换成JavaBean时,json字段的key 默认必须和我们声明类的字段名称一样,当服务器端返回了关键字怎么办,比如key 为new switch这样,我们    在声明类的时候不能写这样的字段,可能你想服务器端改动,他可能要改数据库,但是我告诉你,做服务端的大部分不愿意改动他的json,是很自私的!这时候重命名注解都排上用场了   第二种场景:服务器端返回的json 的key 简直太丑,或者太长,你想简化,my_parent_name,可以简化成mpn 比较优雅简介

              实例:

    [java] view plain copy

    print?在CODE上查看代码片派生到我的代码片

    1. package com.xuan.gson;  
    2.   
    3. import com.google.gson.Gson;  
    4. import com.google.gson.annotations.SerializedName;  
    5.   
    6. /** 
    7.  * @author xuanyouwu 
    8.  * @email xuanyouwu@163.com 
    9.  * @time 2016-05-18 11:20 
    10.  */  
    11. public class GsonTest3 {  
    12.     private static void log(String msg) {  
    13.         System.out.println(msg);  
    14.     }  
    15.   
    16.     public static class User {  
    17.         public String name;  
    18.         public int age;  
    19.         @SerializedName("new")  
    20.         public int isnew;  
    21.   
    22.         @Override  
    23.         public String toString() {  
    24.             return "User{" +  
    25.                     "name='" + name + '\'' +  
    26.                     ", age=" + age +  
    27.                     ", isnew=" + isnew +  
    28.                     '}';  
    29.         }  
    30.     }  
    31.   
    32.     public static void main(String[] args) throws Exception {  
    33.   
    34.         String jsonFromServer = "{\n" +  
    35.                 "    \"age\": 26,\n" +  
    36.                 "    \"name\": \"zhangsan\",\n" +  
    37.                 "    \"new\": 1\n" +  
    38.                 "}";  
    39.         Gson gson = new Gson();  
    40.         User user = gson.fromJson(jsonFromServer, User.class);  
    41.         log("------>user:" + user);  
    42.     }  
    43. }  

    运行结果: ------>user:User{name='zhangsan', age=26, isnew=1}

     

    [java] view plain copy

    print?在CODE上查看代码片派生到我的代码片

    1. package com.xuan.gson;  
    2.   
    3. import com.google.gson.Gson;  
    4. import com.google.gson.annotations.SerializedName;  
    5.   
    6. /** 
    7.  * @author xuanyouwu 
    8.  * @email xuanyouwu@163.com 
    9.  * @time 2016-05-18 11:20 
    10.  */  
    11. public class GsonTest3 {  
    12.     private static void log(String msg) {  
    13.         System.out.println(msg);  
    14.     }  
    15.   
    16.     public static class User2 {  
    17.         public String name;  
    18.         public int age;  
    19.         @SerializedName("my_parent_name")  
    20.         public String pn;  
    21.   
    22.         @Override  
    23.         public String toString() {  
    24.             return "User2{" +  
    25.                     "name='" + name + '\'' +  
    26.                     ", age=" + age +  
    27.                     ", pn='" + pn + '\'' +  
    28.                     '}';  
    29.         }  
    30.     }  
    31.   
    32.     public static void main(String[] args) throws Exception {  
    33.         String jsonFromServer2="{\n" +  
    34.                 "    \"age\": 26,\n" +  
    35.                 "    \"my_parent_name\": \"zhangsanf\",\n" +  
    36.                 "    \"name\": \"zhangsan\"\n" +  
    37.                 "}";  
    38.         Gson gson2 = new Gson();  
    39.         User2 user2 = gson2.fromJson(jsonFromServer2, User2.class);  
    40.         log("------>user2:" + user2);  
    41.     }  
    42. }  

     

    运行结果: ------>user2:User2{name='zhangsan', age=26, pn='zhangsanf'}

     

            作用2:结合alternate 提供多种备用字段key来解析,@SerializedName(value ="desc",alternate = {"other","note"})  如果json中有other就会解析成desc 如果有note也会解析成desc,注意1:value中的值不能出现在alternate中,注意2:alternate的备选字段 会后面的替换前面的

       实例:

       

    [java] view plain copy

    print?在CODE上查看代码片派生到我的代码片

    1. package com.xuan.gson;  
    2.   
    3. import com.google.gson.Gson;  
    4. import com.google.gson.annotations.SerializedName;  
    5.   
    6. /** 
    7.  * @author xuanyouwu 
    8.  * @email xuanyouwu@163.com 
    9.  * @time 2016-05-18 11:20 
    10.  */  
    11. public class GsonTest4 {  
    12.     private static void log(String msg) {  
    13.         System.out.println(msg);  
    14.     }  
    15.   
    16.     public static class User {  
    17.         public String name;  
    18.         public int age;  
    19.         @SerializedName(value = "desc",alternate = {"other","note"})  
    20.         public String desc;  
    21.   
    22.         @Override  
    23.         public String toString() {  
    24.             return "User{" +  
    25.                     "name='" + name + '\'' +  
    26.                     ", age=" + age +  
    27.                     ", desc='" + desc + '\'' +  
    28.                     '}';  
    29.         }  
    30.     }  
    31.   
    32.     public static void main(String[] args) throws Exception {  
    33.         String jsonFromServer = "{\n" +  
    34.                 "    \"age\": 26,\n" +  
    35.                 "    \"other\": \"成都人\",\n" +  
    36.                 "    \"name\": \"zhangsan\"\n" +  
    37.                 "}";  
    38.         Gson gson = new Gson();  
    39.         User user = gson.fromJson(jsonFromServer, User.class);  
    40.         log("------>user:" + user);  
    41.   
    42.   
    43.         String jsonFromServer2 = "{\n" +  
    44.                 "    \"age\": 26,\n" +  
    45.                 "    \"note\": \"成都人\",\n" +  
    46.                 "    \"name\": \"zhangsan\"\n" +  
    47.                 "}";  
    48.         User user2 = gson.fromJson(jsonFromServer2, User.class);  
    49.         log("------>user:" + user2);  
    50.   
    51.         //包括desc 与note note在desc之后  
    52.         String jsonFromServer3="{\n" +  
    53.                 "    \"age\": 26,\n" +  
    54.                 "    \"desc\": \"desc成都人\",\n" +  
    55.                 "    \"name\": \"zhangsan\",\n" +  
    56.                 "    \"note\": \"note成都人\"\n" +  
    57.                 "}";  
    58.         User user3 = gson.fromJson(jsonFromServer3, User.class);  
    59.         log("------>user:" + user3);  
    60.   
    61.         //包括desc 与note note在desc之前  
    62.         String jsonFromServer4="{\n" +  
    63.                 "    \"age\": 26,\n" +  
    64.                 "    \"note\": \"note成都人\",\n" +  
    65.                 "    \"name\": \"zhangsan\",\n" +  
    66.                 "    \"desc\": \"desc成都人\"\n" +  
    67.                 "}";  
    68.         User user4 = gson.fromJson(jsonFromServer4, User.class);  
    69.         log("------>user:" + user4);  
    70.     }  
    71. }  

      运行结果:

         ------>user:User{name='zhangsan', age=26, desc='成都人'}
    ------>user:User{name='zhangsan', age=26, desc='成都人'}
    ------>user:User{name='zhangsan', age=26, desc='note成都人'}
    ------>user:User{name='zhangsan', age=26, desc='desc成都人'}

     

     

      Gson @Expose过滤注解 

     

      源码:默认既可以序列化又可以反序列化

     

    [java] view plain copy

    print?在CODE上查看代码片派生到我的代码片

    1. @Retention(RetentionPolicy.RUNTIME)  
    2. @Target(ElementType.FIELD)  
    3. public @interface Expose {  
    4.     
    5.   public boolean serialize() default true;  
    6.   
    7.   public boolean deserialize() default true;  
    8. }  

    [java] view plain copy

    print?在CODE上查看代码片派生到我的代码片

    1. </pre><pre code_snippet_id="1687762" snippet_file_name="blog_20160518_25_4965554" name="code" class="java">可以排除不需要序列化的字段,需要配合GsonBuilder使用  

    [java] view plain copy

    print?在CODE上查看代码片派生到我的代码片

    1. <pre style="font-family: 宋体; font-size: 9pt; background-color: rgb(255, 255, 255);"><pre name="code" class="java"> Gson gson = new GsonBuilder()  
    2.                 .excludeFieldsWithoutExposeAnnotation()  
    3.                 .create();  

     

      不添加@Expose注解的字段将不会解析:
       分为以下几种情况:
        1:不添加@Expose注解等同于@Expose(deserialize = false,serialize = false) 不做任何解析
        2:@Expose(deserialize = true,serialize = false) 只解析用用,也就是反序列化可以,序列化不可以
        3:@Expose(deserialize = false,serialize = true) 序列化可以,反序列化不行
        4:@Expose(deserialize = true,serialize = true) 既可以序列化,也可以反序列化
        实例:将分别演示这四种情况
     
     
     
      不添加@Expose注解:等同于@Expose(deserialize = false,serialize = false)
     

    [java] view plain copy

    print?在CODE上查看代码片派生到我的代码片

    1. package com.xuan.gson;  
    2.   
    3. import com.google.gson.Gson;  
    4. import com.google.gson.GsonBuilder;  
    5.   
    6. /** 
    7.  * @author xuanyouwu 
    8.  * @email xuanyouwu@163.com 
    9.  * @time 2016-05-18 11:20 
    10.  */  
    11. public class GsonTest5 {  
    12.     private static void log(String msg) {  
    13.         System.out.println(msg);  
    14.     }  
    15.   
    16.     public static class User {  
    17.         public String name;  
    18.   
    19.         @Override  
    20.         public String toString() {  
    21.             return "User{" +  
    22.                     "name='" + name + '\'' +  
    23.                     '}';  
    24.         }  
    25.     }  
    26.   
    27.     public static void main(String[] args) throws Exception {  
    28.         String jsonFromServer = "{\"name\": \"zhangsan\"}";  
    29.         Gson gson = new GsonBuilder()  
    30.                 .excludeFieldsWithoutExposeAnnotation()  
    31.                 .create();  
    32.         User user = gson.fromJson(jsonFromServer, User.class);  
    33.         log("------>反序列化:" + user);  
    34.   
    35.         User user1 = new User();  
    36.         user1.name = "zhangsan2";  
    37.         String userStr = gson.toJson(user1);  
    38.         log("------>序列化:" + userStr);  
    39.     }  
    40. }  
    运行结果:
    ------>反序列化:User{name='null'}
    ------>序列化:{}
    
      添加@Expose注解 
     

    [java] view plain copy

    print?在CODE上查看代码片派生到我的代码片

    1. package com.xuan.gson;  
    2.   
    3. import com.google.gson.Gson;  
    4. import com.google.gson.GsonBuilder;  
    5. import com.google.gson.annotations.Expose;  
    6.   
    7. /** 
    8.  * @author xuanyouwu 
    9.  * @email xuanyouwu@163.com 
    10.  * @time 2016-05-18 11:20 
    11.  */  
    12. public class GsonTest5 {  
    13.     private static void log(String msg) {  
    14.         System.out.println(msg);  
    15.     }  
    16.   
    17.     public static class User {  
    18.         @Expose //等同于 @Expose(deserialize = true,serialize = true)  
    19.         public String name;  
    20.   
    21.         @Override  
    22.         public String toString() {  
    23.             return "User{" +  
    24.                     "name='" + name + '\'' +  
    25.                     '}';  
    26.         }  
    27.     }  
    28.   
    29.     public static void main(String[] args) throws Exception {  
    30.         String jsonFromServer = "{\"name\": \"zhangsan\"}";  
    31.         Gson gson = new GsonBuilder()  
    32.                 .excludeFieldsWithoutExposeAnnotation()  
    33.                 .create();  
    34.         User user = gson.fromJson(jsonFromServer, User.class);  
    35.         log("------>反序列化:" + user);  
    36.   
    37.         User user1 = new User();  
    38.         user1.name = "zhangsan2";  
    39.         String userStr = gson.toJson(user1);  
    40.         log("------>序列化:" + userStr);  
    41.     }  
    42. }  

    运行结果:

    ------>反序列化:User{name='zhangsan'}
    ------>序列化:{"name":"zhangsan2"}

     

     

    @Expose注解 只序列化

    [java] view plain copy

    print?在CODE上查看代码片派生到我的代码片

    1. package com.xuan.gson;  
    2.   
    3. import com.google.gson.Gson;  
    4. import com.google.gson.GsonBuilder;  
    5. import com.google.gson.annotations.Expose;  
    6.   
    7. /** 
    8.  * @author xuanyouwu 
    9.  * @email xuanyouwu@163.com 
    10.  * @time 2016-05-18 11:20 
    11.  */  
    12. public class GsonTest5 {  
    13.     private static void log(String msg) {  
    14.         System.out.println(msg);  
    15.     }  
    16.   
    17.     public static class User {  
    18.         @Expose(deserialize = false,serialize = true)  
    19.         public String name;  
    20.   
    21.         @Override  
    22.         public String toString() {  
    23.             return "User{" +  
    24.                     "name='" + name + '\'' +  
    25.                     '}';  
    26.         }  
    27.     }  
    28.   
    29.     public static void main(String[] args) throws Exception {  
    30.         String jsonFromServer = "{\"name\": \"zhangsan\"}";  
    31.         Gson gson = new GsonBuilder()  
    32.                 .excludeFieldsWithoutExposeAnnotation()  
    33.                 .create();  
    34.         User user = gson.fromJson(jsonFromServer, User.class);  
    35.         log("------>反序列化:" + user);  
    36.   
    37.         User user1 = new User();  
    38.         user1.name = "zhangsan2";  
    39.         String userStr = gson.toJson(user1);  
    40.         log("------>序列化:" + userStr);  
    41.     }  
    42. }  

    运行结果:

    ------>反序列化:User{name='null'}------>序列化:{"name":"zhangsan2"}

     

     

     

          @Expose 只反序列化

    [java] view plain copy

    print?在CODE上查看代码片派生到我的代码片

    1. package com.xuan.gson;  
    2.   
    3. import com.google.gson.Gson;  
    4. import com.google.gson.GsonBuilder;  
    5. import com.google.gson.annotations.Expose;  
    6.   
    7. /** 
    8.  * @author xuanyouwu 
    9.  * @email xuanyouwu@163.com 
    10.  * @time 2016-05-18 11:20 
    11.  */  
    12. public class GsonTest5 {  
    13.     private static void log(String msg) {  
    14.         System.out.println(msg);  
    15.     }  
    16.   
    17.     public static class User {  
    18.         @Expose(deserialize = true, serialize = false)  
    19.         public String name;  
    20.   
    21.         @Override  
    22.         public String toString() {  
    23.             return "User{" +  
    24.                     "name='" + name + '\'' +  
    25.                     '}';  
    26.         }  
    27.     }  
    28.   
    29.     public static void main(String[] args) throws Exception {  
    30.         String jsonFromServer = "{\"name\": \"zhangsan\"}";  
    31.         Gson gson = new GsonBuilder()  
    32.                 .excludeFieldsWithoutExposeAnnotation()  
    33.                 .create();  
    34.         User user = gson.fromJson(jsonFromServer, User.class);  
    35.         log("------>反序列化:" + user);  
    36.   
    37.         User user1 = new User();  
    38.         user1.name = "zhangsan2";  
    39.         String userStr = gson.toJson(user1);  
    40.         log("------>序列化:" + userStr);  
    41.     }  
    42. }  

    运行结果:

     ------>反序列化:User{name='zhangsan'}
    ------>序列化:{}

     

     

        @Since(float v)注解  版本控制 

          结合GsonBuilder.setVersion(n)使用 当n>=v时 才会序列化解析

     

    [java] view plain copy

    print?在CODE上查看代码片派生到我的代码片

    1. package com.xuan.gson;  
    2.   
    3. import com.google.gson.Gson;  
    4. import com.google.gson.GsonBuilder;  
    5. import com.google.gson.annotations.Since;  
    6.   
    7. /** 
    8.  * @author xuanyouwu 
    9.  * @email xuanyouwu@163.com 
    10.  * @time 2016-05-18 11:20 
    11.  */  
    12. public class GsonTest6 {  
    13.     private static void log(String msg) {  
    14.         System.out.println(msg);  
    15.     }  
    16.   
    17.     public static class User {  
    18.         @Since(2)  
    19.         public String name;  
    20.   
    21.         @Override  
    22.         public String toString() {  
    23.             return "User{" +  
    24.                     "name='" + name + '\'' +  
    25.                     '}';  
    26.         }  
    27.     }  
    28.   
    29.     public static void main(String[] args) throws Exception {  
    30.         String jsonFromServer = "{\"name\": \"zhangsan\"}";  
    31.         Gson gson = new GsonBuilder()  
    32.                 .setVersion(1)//版本为1  
    33.                 .create();  
    34.         User user1 = gson.fromJson(jsonFromServer, User.class);  
    35.         log("------>反序列化v=1:" + user1);  
    36.   
    37.         User user1_1 = new User();  
    38.         user1_1.name = "zhangsan2";  
    39.         String userStr = gson.toJson(user1_1);  
    40.         log("------>序列化v=1:" + userStr);  
    41.   
    42.   
    43.         Gson gson2 = new GsonBuilder()  
    44.                 .setVersion(2)//版本为2  
    45.                 .create();  
    46.         User user2 = gson2.fromJson(jsonFromServer, User.class);  
    47.         log("------>反序列化v=2:" + user2);  
    48.   
    49.         User user2_1 = new User();  
    50.         user2_1.name = "zhangsan2";  
    51.         String userStr2_1 = gson2.toJson(user2_1);  
    52.         log("------>序列化v=2:" + userStr2_1);  
    53.   
    54.         Gson gson3 = new GsonBuilder()  
    55.                 .setVersion(3)//版本为3  
    56.                 .create();  
    57.         User user3 = gson3.fromJson(jsonFromServer, User.class);  
    58.         log("------>反序列化v=3:" + user3);  
    59.   
    60.         User user3_1 = new User();  
    61.         user3_1.name = "zhangsan2";  
    62.         String userStr3_1 = gson3.toJson(user3_1);  
    63.         log("------>序列化v=3:" + userStr3_1);  
    64.     }  
    65. }  

    运行结果:

    ------>反序列化v=1:User{name='null'}
    ------>序列化v=1:{}
    ------>反序列化v=2:User{name='zhangsan'}
    ------>序列化v=2:{"name":"zhangsan2"}
    ------>反序列化v=3:User{name='zhangsan'}
    ------>序列化v=3:{"name":"zhangsan2"}

     

     

        @Util(float v)注解 版本控制

          当gson的setVersion(n) n<v 才解析

    [java] view plain copy

    print?在CODE上查看代码片派生到我的代码片

    1. package com.xuan.gson;  
    2.   
    3. import com.google.gson.Gson;  
    4. import com.google.gson.GsonBuilder;  
    5. import com.google.gson.annotations.Until;  
    6.   
    7. /** 
    8.  * @author xuanyouwu 
    9.  * @email xuanyouwu@163.com 
    10.  * @time 2016-05-18 11:20 
    11.  */  
    12. public class GsonTest6 {  
    13.     private static void log(String msg) {  
    14.         System.out.println(msg);  
    15.     }  
    16.   
    17.     public static class User {  
    18.         @Until(2)  
    19.         public String name;  
    20.   
    21.         @Override  
    22.         public String toString() {  
    23.             return "User{" +  
    24.                     "name='" + name + '\'' +  
    25.                     '}';  
    26.         }  
    27.     }  
    28.   
    29.     public static void main(String[] args) throws Exception {  
    30.         String jsonFromServer = "{\"name\": \"zhangsan\"}";  
    31.         Gson gson = new GsonBuilder()  
    32.                 .setVersion(1)//版本为1  
    33.                 .create();  
    34.         User user1 = gson.fromJson(jsonFromServer, User.class);  
    35.         log("------>反序列化v=1:" + user1);  
    36.   
    37.         User user1_1 = new User();  
    38.         user1_1.name = "zhangsan2";  
    39.         String userStr = gson.toJson(user1_1);  
    40.         log("------>序列化v=1:" + userStr);  
    41.   
    42.   
    43.         Gson gson2 = new GsonBuilder()  
    44.                 .setVersion(2)//版本为2  
    45.                 .create();  
    46.         User user2 = gson2.fromJson(jsonFromServer, User.class);  
    47.         log("------>反序列化v=2:" + user2);  
    48.   
    49.         User user2_1 = new User();  
    50.         user2_1.name = "zhangsan2";  
    51.         String userStr2_1 = gson2.toJson(user2_1);  
    52.         log("------>序列化v=2:" + userStr2_1);  
    53.   
    54.         Gson gson3 = new GsonBuilder()  
    55.                 .setVersion(3)//版本为3  
    56.                 .create();  
    57.         User user3 = gson3.fromJson(jsonFromServer, User.class);  
    58.         log("------>反序列化v=3:" + user3);  
    59.   
    60.         User user3_1 = new User();  
    61.         user3_1.name = "zhangsan2";  
    62.         String userStr3_1 = gson3.toJson(user3_1);  
    63.         log("------>序列化v=3:" + userStr3_1);  
    64.     }  
    65. }  


    运行结果:

    ------>反序列化v=1:User{name='zhangsan'}
    ------>序列化v=1:{"name":"zhangsan2"}
    ------>反序列化v=2:User{name='null'}
    ------>序列化v=2:{}
    ------>反序列化v=3:User{name='null'}
    ------>序列化v=3:{}

     

    Gson 高级用法

        相信看过retrofit2.0 源码的同学都知道,其中有一个GsonConverterFactory 里面的用法十分精炼老成,这里来一段源码

     

     

       据说使用TypeAdapter 效率更高,本人还未对比测试,暂时放后吧,TypeAdapter是什么玩意呢?

       在源码中备注了一句 Converts Java objects to and from JSON 就是对象json之间的互相转换 接替了T 泛型类的序列化和反序列化的逻辑

       从源码中我们看到区分了2.1版本之前后之后的用法,2.1版本之前可以自定义adapter:

       

    [java] view plain copy

    print?在CODE上查看代码片派生到我的代码片

    1. public class PointAdapter extends TypeAdapter<Point> {  
    2.  *     public Point read(JsonReader reader) throws IOException {  
    3.  *       if (reader.peek() == JsonToken.NULL) {  
    4.  *         reader.nextNull();  
    5.  *         return null;  
    6.  *       }  
    7.  *       String xy = reader.nextString();  
    8.  *       String[] parts = xy.split(",");  
    9.  *       int x = Integer.parseInt(parts[0]);  
    10.  *       int y = Integer.parseInt(parts[1]);  
    11.  *       return new Point(x, y);  
    12.  *     }  
    13.  *     public void write(JsonWriter writer, Point value) throws IOException {  
    14.  *       if (value == null) {  
    15.  *         writer.nullValue();  
    16.  *         return;  
    17.  *       }  
    18.  *       String xy = value.getX() + "," + value.getY();  
    19.  *       writer.value(xy);  
    20.  *     }  
    21.  *   }}  

     

        使用

      

    [java] view plain copy

    print?在CODE上查看代码片派生到我的代码片

    1. GsonBuilder builder = new GsonBuilder();  
    2.  *   builder.registerTypeAdapter(Point.class, new PointAdapter());  
    3.  *   // if PointAdapter didn't check for nulls in its read/write methods, you should instead use  
    4.  *   // builder.registerTypeAdapter(Point.class, new PointAdapter().nullSafe());  
    5.  *   ...  
    6.  *   Gson gson = builder.create();  

     

        在2.1版本之后更推荐直接插入泛型就使用

     

    [java] view plain copy

    print?在CODE上查看代码片派生到我的代码片

    1. //   String json = "{'origin':'0,0','points':['1,2','3,4']}";  
    2. //   TypeAdapter<Graph> graphAdapter = gson.getAdapter(Graph.class);  
    3. //   Graph graph = graphAdapter.fromJson(json);  
    4. // }</pre>  
    5. // And an example for serialization: <pre>   {@code  
    6. //  
    7. //   Graph graph = new Graph(...);  
    8. //   TypeAdapter<Graph> graphAdapter = gson.getAdapter(Graph.class);  
    9. //   String json = graphAdapter.toJson(graph);  
    10. // }</pre>  
       实例:使用TypeAdapter 来序列化和反序列化
     

    [java] view plain copy

    print?在CODE上查看代码片派生到我的代码片

    1. package com.xuan.gson;  
    2.   
    3. import com.google.gson.Gson;  
    4. import com.google.gson.TypeAdapter;  
    5.   
    6. /** 
    7.  * @author xuanyouwu 
    8.  * @email xuanyouwu@163.com 
    9.  * @time 2016-05-18 11:20 
    10.  */  
    11. public class GsonTest7 {  
    12.     private static void log(String msg) {  
    13.         System.out.println(msg);  
    14.     }  
    15.   
    16.     public static class User {  
    17.         public String name;  
    18.         public int age;  
    19.   
    20.         @Override  
    21.         public String toString() {  
    22.             return "User{" +  
    23.                     "name='" + name + '\'' +  
    24.                     ", age=" + age +  
    25.                     '}';  
    26.         }  
    27.     }  
    28.   
    29.     public static void main(String[] args) throws Exception {  
    30.         Gson gson = new Gson();  
    31.         TypeAdapter<User> userTypeAdapter = gson.getAdapter(User.class);  
    32.         User user = new User();  
    33.         user.name = "xuanyouwu";  
    34.         user.age = 26;  
    35.         String userJsonStr = userTypeAdapter.toJson(user);  
    36.         log("------>序列化:" + userJsonStr);  
    37.   
    38.         User user1 = userTypeAdapter.fromJson(userJsonStr);  
    39.         log("------>反序列化:" + user1);  
    40.   
    41.     }  
    42. }  

    [java] view plain copy

    print?在CODE上查看代码片派生到我的代码片

    1. 运行结果:  

    [java] view plain copy

    print?在CODE上查看代码片派生到我的代码片

    1. ------>序列化:{"name":"xuanyouwu","age":26}  
    2. ------>反序列化:User{name='xuanyouwu', age=26}  
    Gson的容错机制:
       为什么要容错了,在javaBean中声明了int类型的age 如果服务端 返回的是"" 空字符串怎么办呢?崩溃?
       如果json格式不规范如 {name=zhangsan,age:26,hobby=null}  发现不是普通的key value
      容错实现方式1:
      1:创建Gson的方式

    [java] view plain copy

    print?在CODE上查看代码片派生到我的代码片

    1. gson = new GsonBuilder()  
    2.                   .setLenient()// json宽松  
    3.                   .create();  

    2:使用JsonReader

       JsonReader jsonReader = gson.newJsonReader(value.charStream());

    [java] view plain copy

    print?在CODE上查看代码片派生到我的代码片

    1. jsonReader.<span style="font-family: 宋体; font-size: 9pt;">setLenient(true)</span>  

        3:自定义TypeAdapter

        4:使用注解JsonAdapter,其实也是自定义Adapter

     

     1.2归为一类 由框架实现,基本json大格式规范,键值对不标准,多引号的问题等等,而不报错停止解析,但是功能相对较弱

     能解决bug 

    [java] view plain copy

    print?

    1. com.google.gson.JsonSyntaxException: com.google.gson.stream.MalformedJsonException: Use JsonReader.setLenient(true) to accept malformed JSON<span style="font-family:宋体; font-size:9pt; background-color:rgb(228,228,255)"> </span>  

    3,4归为一类,都属于自定义adapter,但是3与gson绑定,4使用注解和字段绑定

     实例:

       

    [java] view plain copy

    print?在CODE上查看代码片派生到我的代码片

    1. package com.xuan.gson;  
    2.   
    3. import com.google.gson.Gson;  
    4. import com.google.gson.GsonBuilder;  
    5. import com.google.gson.JsonParseException;  
    6. import com.google.gson.TypeAdapter;  
    7. import com.google.gson.stream.JsonReader;  
    8. import com.google.gson.stream.JsonWriter;  
    9.   
    10. import java.io.IOException;  
    11.   
    12. /** 
    13.  * @author xuanyouwu 
    14.  * @email xuanyouwu@163.com 
    15.  * @time 2016-05-18 11:20 
    16.  */  
    17. public class GsonTest8 {  
    18.     private static void log(String msg) {  
    19.         System.out.println(msg);  
    20.     }  
    21.   
    22.     public static class User {  
    23.         public String name;  
    24.         public int age;  
    25.   
    26.         @Override  
    27.         public String toString() {  
    28.             return "User{" +  
    29.                     "name='" + name + '\'' +  
    30.                     ", age=" + age +  
    31.                     '}';  
    32.         }  
    33.   
    34.   
    35.         ;  
    36.     }  
    37.   
    38.     public static class UserTypeAdapter extends TypeAdapter<User> {  
    39.   
    40.         @Override  
    41.         public void write(JsonWriter out, User value) throws IOException {  
    42.             out.beginObject();  
    43.             out.name("name").value(value.name);  
    44.             out.name("age").value(value.age);  
    45.             out.endObject();  
    46.         }  
    47.   
    48.         @Override  
    49.         public User read(JsonReader in) throws IOException {  
    50.             User user = new User();  
    51.             in.beginObject();  
    52.             while (in.hasNext()) {  
    53.                 switch (in.nextName()) {  
    54.                     case "name":  
    55.                         user.name = in.nextString();  
    56.                         break;  
    57.                     case "age":  
    58.                         try {  
    59.                             String str = in.nextString();  
    60.                             user.age = Integer.valueOf(str);  
    61.                         } catch (Exception e) {  
    62.                         }  
    63.                         break;  
    64.                 }  
    65.             }  
    66.             in.endObject();  
    67.             return user;  
    68.         }  
    69.     }  
    70.   
    71.     public static void main(String[] args) throws Exception {  
    72.         Gson gson = new Gson();  
    73.   
    74.         String jsonStrFromServer = "{\n" +  
    75.                 "    \"age\": \"\",\n" +  
    76.                 "    \"name\": \"zhangsan\"\n" +  
    77.                 "}";  
    78.         log("------->jsonFromServer:"+jsonStrFromServer);  
    79.         try {  
    80.             User user = gson.fromJson(jsonStrFromServer, User.class);  
    81.             log("------>默认Gson 解析:" + user);  
    82.         } catch (JsonParseException e) {//java.lang.NumberFormatException: empty String  
    83.             log("------>默认Gson 解析 异常:" + e);  
    84.         }  
    85.   
    86.         Gson gson2 = new GsonBuilder()  
    87.                 .registerTypeAdapter(User.class, new UserTypeAdapter()).create();  
    88.         try {  
    89.             User user2 = gson2.fromJson(jsonStrFromServer, User.class);  
    90.             log("------>自定义adapter 解析:" + user2);  
    91.         } catch (JsonParseException e) {//java.lang.NumberFormatException: empty String  
    92.             log("------>自定义adapter 异常:" + e);  
    93.         }  
    94.   
    95.         try {  
    96.             UserTypeAdapter userTypeAdapter = new UserTypeAdapter();  
    97.             User user3 = userTypeAdapter.fromJson(jsonStrFromServer);  
    98.             log("------>自定义adapter 解析2:" + user3);  
    99.         } catch (Exception e) {  
    100.             log("------>自定义adapter 异常2:" + e);  
    101.         }  
    102.     }  
    103. }  

    运行结果:

    ------->jsonFromServer:{
        "age": "",
        "name": "zhangsan"
    }
    ------>默认Gson 解析 异常:com.google.gson.JsonSyntaxException: java.lang.NumberFormatException: empty String
    ------>自定义adapter 解析:User{name='zhangsan', age=0}
    ------>自定义adapter 解析2:User{name='zhangsan', age=0}

    可以看到 age是空字符串 但是不影响整体的解析流程,这对客户端是十分友好的

     

      基于注解的方式,上面的方式倾向于整体,注解的方式倾向于字段

      

    [java] view plain copy

    print?在CODE上查看代码片派生到我的代码片

    1. package com.xuan.gson;  
    2.   
    3. import com.google.gson.Gson;  
    4. import com.google.gson.JsonParseException;  
    5. import com.google.gson.TypeAdapter;  
    6. import com.google.gson.annotations.JsonAdapter;  
    7. import com.google.gson.stream.JsonReader;  
    8. import com.google.gson.stream.JsonWriter;  
    9.   
    10. import java.io.IOException;  
    11.   
    12. /** 
    13.  * @author xuanyouwu 
    14.  * @email xuanyouwu@163.com 
    15.  * @time 2016-05-18 11:20 
    16.  */  
    17. public class GsonTest9 {  
    18.     private static void log(String msg) {  
    19.         System.out.println(msg);  
    20.     }  
    21.   
    22.     public static class User {  
    23.         public String name;  
    24.         @JsonAdapter(IntegerTypeAdapter.class)  
    25.         public int age;  
    26.   
    27.         @Override  
    28.         public String toString() {  
    29.             return "User{" +  
    30.                     "name='" + name + '\'' +  
    31.                     ", age=" + age +  
    32.                     '}';  
    33.         }  
    34.     }  
    35.   
    36.     public static class IntegerTypeAdapter extends TypeAdapter<Integer> {  
    37.   
    38.         @Override  
    39.         public void write(JsonWriter out, Integer value) throws IOException {  
    40.             out.value(value);  
    41.         }  
    42.   
    43.         @Override  
    44.         public Integer read(JsonReader in) throws IOException {  
    45.             int i = 0;  
    46.             try {  
    47.                 String str = in.nextString();  
    48.                 i = Integer.valueOf(str);  
    49.             } catch (Exception e) {  
    50.             }  
    51.             return i;  
    52.         }  
    53.     }  
    54.   
    55.     public static class User2 {  
    56.         public String name;  
    57.         public int age;  
    58.   
    59.         @Override  
    60.         public String toString() {  
    61.             return "User{" +  
    62.                     "name='" + name + '\'' +  
    63.                     ", age=" + age +  
    64.                     '}';  
    65.         }  
    66.     }  
    67.   
    68.   
    69.     public static void main(String[] args) throws Exception {  
    70.         Gson gson = new Gson();  
    71.   
    72.         String jsonStrFromServer = "{\n" +  
    73.                 "    \"age\": \"\",\n" +  
    74.                 "    \"name\": \"zhangsan\"\n" +  
    75.                 "}";  
    76.         log("------->jsonFromServer:" + jsonStrFromServer);  
    77.         try {  
    78.             User2 user2 = gson.fromJson(jsonStrFromServer, User2.class);  
    79.             log("------>gson 解析:" + user2);  
    80.         } catch (Exception e) {  
    81.             log("------>gson 解析异常:" + e);  
    82.         }  
    83.   
    84.   
    85.         try {  
    86.             User user = gson.fromJson(jsonStrFromServer, User.class);  
    87.             log("------>JsonAdapter 注解 解析:" + user);  
    88.         } catch (JsonParseException e) {//java.lang.NumberFormatException: empty String  
    89.             log("------>JsonAdapter 注解 异常:" + e);  
    90.         }  
    91.     }  
    92. }  

     

    运行结果:

    [java] view plain copy

    print?在CODE上查看代码片派生到我的代码片

    1. ------->jsonFromServer:{  
    2.     "age": "",  
    3.     "name": "zhangsan"  
    4. }  
    5. ------>gson 解析异常:com.google.gson.JsonSyntaxException: java.lang.NumberFormatException: empty String  
    6. ------>JsonAdapter 注解 解析:User{name='zhangsan', age=0}  

    [java] view plain copy

    print?在CODE上查看代码片派生到我的代码片

    1. 可以看到我们成功地跳过服务端返回json不合理的坑了吧  

    [java] view plain copy

    print?在CODE上查看代码片派生到我的代码片

    1. </pre><pre code_snippet_id="1687762" snippet_file_name="blog_20160519_47_1535429" name="code" class="java">不得不吐槽啊,像这种服务器端错误,应该完全归结服务端json不合理返回,  

    [java] view plain copy

    print?在CODE上查看代码片派生到我的代码片

    1. 往往老板都会找客户端原因,怎么又崩溃了?怎么又不显示了?老板不会关心是不是数据返回不合理的问题的!  

    [java] view plain copy

    print?在CODE上查看代码片派生到我的代码片

    1. 做客户端需要相当的承受能力哈,同意的点个赞哈  

    [java] view plain copy

    print?在CODE上查看代码片派生到我的代码片

    1. </pre><p>其实上面的方式保险是很保险,但是需要维护的地方多,代码量大,我们介绍另外一种方式:JsonSerializer与JsonDeserializer 之关系单方面的处理,可以全局注册某个类型的处理:看实例:</p><p><pre name="code" class="java">package com.xuan.gson;  
    2.   
    3. import com.google.gson.Gson;  
    4. import com.google.gson.GsonBuilder;  
    5. import com.google.gson.JsonDeserializationContext;  
    6. import com.google.gson.JsonDeserializer;  
    7. import com.google.gson.JsonElement;  
    8. import com.google.gson.JsonParseException;  
    9.   
    10. import java.lang.reflect.Type;  
    11.   
    12. /** 
    13.  * @author xuanyouwu 
    14.  * @email xuanyouwu@163.com 
    15.  * @time 2016-05-18 11:20 
    16.  */  
    17. public class GsonTest10 {  
    18.     private static void log(String msg) {  
    19.         System.out.println(msg);  
    20.     }  
    21.   
    22.     public static class User {  
    23.         public String name;  
    24.         public int age;  
    25.   
    26.         @Override  
    27.         public String toString() {  
    28.             return "User{" +  
    29.                     "name='" + name + '\'' +  
    30.                     ", age=" + age +  
    31.                     '}';  
    32.         }  
    33.     }  
    34.   
    35.   
    36.     public static void main(String[] args) throws Exception {  
    37.         JsonDeserializer<Integer> jsonDeserializer = new JsonDeserializer<Integer>() {  
    38.             @Override  
    39.             public Integer deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws JsonParseException {  
    40.                 try {  
    41.                     return json.getAsInt();  
    42.                 } catch (NumberFormatException e) {  
    43.                     return 0;  
    44.                 }  
    45.             }  
    46.         };  
    47.         Gson gson = new GsonBuilder()  
    48.                 .registerTypeAdapter(int.class, jsonDeserializer)  
    49.                 .create();  
    50.   
    51.         String jsonStrFromServer = "{\n" +  
    52.                 "    \"age\": \"\",\n" +  
    53.                 "    \"name\": \"zhangsan\"\n" +  
    54.                 "}";  
    55.         log("------->jsonFromServer:" + jsonStrFromServer);  
    56.         try {  
    57.             User user = gson.fromJson(jsonStrFromServer, User.class);  
    58.             log("------>  JsonDeserializer<Integer> 解析:" + user);  
    59.         } catch (Exception e) {  
    60.             log("------>  JsonDeserializer<Integer> 解析异常:" + e);  
    61.         }  
    62.   
    63.         Gson gson1=new Gson();  
    64.         try {  
    65.             User user1 = gson1.fromJson(jsonStrFromServer, User.class);  
    66.             log("------> 默认gson 解析:" + user1);  
    67.         } catch (Exception e) {  
    68.             log("------>  默认gson 解析异常:" + e);  
    69.         }  
    70.   
    71.   
    72.     }  
    73. }  

    运行结果:

    ------->jsonFromServer:{
        "age": "",
        "name": "zhangsan"
    }
    ------>  JsonDeserializer<Integer> 解析:User{name='zhangsan', age=0}
    ------>  默认gson 解析异常:com.google.gson.JsonSyntaxException: java.lang.NumberFormatException: empty String

     这样定义全局的反序列化工具就能避免解析异常

    保存下来 ,用作学习,不到之处,还望各位大佬指正

    转载:https://blog.csdn.net/sinat_34093604/article/details/53158059

    博主:吃奶的牛

    展开全文
  • Google Gson 使用详解

    2019-09-15 16:43:39
    Gson Summary Java解析Json最常用的类库有:google 的Gson、阿里巴巴的FastJson、以及 Jackson。这些都是非常优秀而且常用的库。GSON是Google提供的用来在Java对象和JSON数据之间进行映射的Java类库,可以快速的将一...
  • 方法 - 新版 IDEA 添加 GSON的应用jar包

    千次阅读 2019-01-27 15:23:52
    IDEA版本 首先进入Project Structure 然后在右侧点击+号后选择From Maven… 再弹出的窗口的搜索框里填入com.google.code.gson然后点右边的搜索。 搜索的差不多时点击下来菜单选中GSON,再点击OK ...Maven中...
  • javaMaven中添加json依赖

    万次阅读 2018-04-04 16:56:32
    首先在Maven项目中添加依赖a). json-lib[java] view plain copy&lt;dependency&gt; &lt;groupId&gt;net.sf.json-lib&lt;/groupId&gt; &lt;artifactId&gt;json-lib&lt;/...
  • Maven和Gradle如何添加依赖

    万次阅读 2018-04-05 16:17:15
    一、首先来看看Maven项目怎么添加依赖 二、上图红圈部分的pom.xml文件就是可以添加依赖的地方 例如这个……,一定要放到……里面 &lt;!-- Compile --&gt; &lt;dependency&gt; &lt;...
  • 在IDEA使用Gson导入包方式

    千次阅读 2020-08-02 20:14:14
    IDEA版本 首先进入Project Structure ...然后在右侧点击+号后选择From Maven… 再弹出的窗口的搜索框里填入com.google.code.gson然后点右边的搜索。 搜索的差不多时点击下来菜单选中GSON,再点击O...
  • 缺少gson-1.7.2.jar,所以导致编译失败...在pom.xml 添加 一下内容,引入jar包 <dependency> <groupId>com.google.code.gson</groupId> <artifactId>gson</artifactId> <...
  • 没有捆绑或计划捆绑ext-gson依赖项,因此应该将所有依赖项与provided作用域一起添加。 介绍了什么 当前ext-gson支持: JsonReader和JsonWriter的次要实用程序方法。 JsonElement静态工厂方法和生成器, ...
  • 用于简化maven项目依赖添加的cli工具 安装它 npm install easymaven -g 用它 在 Maven 项目根文件夹(包含 pom.xml 文件)上执行 easymaven gson 这会将 gson 添加到您的依赖项中,如果您的 pom 已经在其依赖项上...
  • json的操作以及如何查找maven坐标

    千次阅读 2019-06-11 13:51:06
    maven仓库官方地址 https://mvnrepository.com/ ②输入关键字 ③点击进入(建议使用使用次数多的坐标) ④点击version下的版本号,复制坐标到pom.xml文件 二、对象转json 实体类属性: private ...
  • kotlin的Gson的使用

    千次阅读 2019-04-17 20:32:23
    kotlin的Gson的使用 首先你得先加入依赖库 ‘com.google.code.gson:gson:2.8.5’ 一:没有数据头的纯属组Json解析 [ { "name": "zhangsan", "age": "10", "phone": "11111", "email": "11111@11.com" }, { ...
  • 添加如下依赖: <dependency> <groupId>com.google.code.gson</groupId> <artifactId>gson</artifactId> <version>1.7.2</version> </dependency>
  • maven手动添加jar包到maven仓库

    千次阅读 2015-06-08 15:03:24
    1.首先到http://mvnrepository.com查找仓库需要添加的jar 以gson2.2.4.jar为例: 2.将jar包下载到本地,在命令行输入 mvn install:install-file -Dfile=jar包的位置 -DgroupId=上面的groupId -...
  • Gson 用户指南(中文)

    万次阅读 2016-01-08 19:37:34
    整体概括Gson 是一个将Java对象转换成Json字符串,将Json字符串转换陈成Java对象的工具库Gson能够处理任何类型的Java对象,甚至包括那些你没有源代码的Java类(不了解对象的属性)Gson能干什么 提供简单的方法(工厂...
  • 首先,需要将GSON类库的jar包引入到自己的IDE,本教程使用IDEA为例子。 1.下载GSON的jar包 GSON的github地址:https://github.com/google/gson/ GSON的下载地址:...
  • (1) 项目根目录下的build.gradle里repositories节点下添加仓库地址 AS 3.0之前: buildscript { repositories { //依赖的仓库 jcenter() } dependencies { //项目依赖的Gradle版本 classpath '...
  • 所以呢,先是找一个json转换工具包,找到了gson,google的,一开始 的配置感觉是顺利的,跟平常一样:项目-》build path-》libraries-》add external jar-》apply 看这似乎很顺利没买病哦! 结果可把我搞得,运行失败...
  • Gson 中文翻译

    2019-03-10 21:57:30
    用户向导:该向导包含你的代码如何使用Gson的案例。 改动日志:最近版本的变化。 设计文档:这个文档讨论了当设计Gson时候面对的问题。他也包含Gson和其他Java他用于json转化的类库的比较。 请使用StackOverflow上...
  • 点击下方公众号「关注」和「星标」回复“1024”获取独家整理的学习资料!相信做后端维护与开发的同学都用过Maven,这是一个非常经典好用的项目构建工具。但是如果你经常使用Maven,可能会...
  • Gson使用

    2018-12-04 16:52:01
    Gson使用 Java对象和Json之间的互转,一般用的比较多的两个类库是Jackson和Gson,下面记录一下Gson的学习使用。 基础概念: ...使用Maven管理Gson,pom.xml导入gson的依赖 &lt;depen...
  • Gson与Fastjson两种Json解析神器保姆级使用攻略 一、为什么使用Gson与Fastjson? Ajax异步访问数据需要前端(js)和服务器端(java)进行传输数据,但是Ajax只能识别字符串,但是服务器里面的是一个java对象,需要将...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 6,191
精华内容 2,476
关键字:

maven中添加gson