网站前置审批 公司名称,练手网站开发,网上做调查赚钱的网站有哪些,网站开发及设计gson 入门在Java世界中#xff0c;JSON已成为事实上的XML数据交换格式标准#xff0c;因为它的易用性和传输效率高。 如果您不了解JSON#xff0c;那就是Javascript对象表示法#xff0c;这是一种基于文本的数据交换格式#xff0c;是名称-值的集合#xff0c;其中名称严… gson 入门 在Java世界中JSON已成为事实上的XML数据交换格式标准因为它的易用性和传输效率高。 如果您不了解JSON那就是Javascript对象表示法这是一种基于文本的数据交换格式是名称-值的集合其中名称严格是字符串类型值可以是int布尔值数组或其他json对象。 GSON是Google开发的开源Java库。 它是用于将Java对象与json表示形式转换的API。 为什么要使用它 将任何Java对象即新对象或任何现有/旧版对象转换为JSON反之亦然。 对通用对象的最佳支持 简单方便的转换方法 无需任何注释的字段进行转换 默认情况下所有字段包括私有字段都包含在转化中 如果不想在转换中包含该字段请对该字段使用瞬变修饰符 它通过不将其包含在序列化输出中而在反序列化期间将其初始化回null从而优雅地处理null字段。 如何将其添加到项目中 使用以下方法之一将其添加为依赖项 使用Maven 将以下依赖项添加到项目的pom.xml中 dependencygroupIdcom.google.code.gson/groupIdartifactIdgson/artifactIdversion2.2.4/version
/dependency使用Gradle 在项目的build.gradle中添加以下内容 repositories {mavenCentral()
}dependencies {compile com.google.code.gson:gson:2.2.4
}用作非托管依赖项 如果不使用任何构建工具则可以将gson jar添加到直接classpath或构建路径中。 从GSON项目的下载页面下载最新的jar。 下载的zip文件包含3个jar文件-二进制文件源代码和javadoc。 抓取二进制jar文件并将其添加到您的项目类路径中。 如何使用它 为了将对象与json相互转换您需要使用Gson类及其以下2种方法。 toJson 转换提供给json字符串的对象将要转换的对象作为参数并返回json表示字符串 fromJSon 将json字符串转换为object将第一个参数作为json字符串作为object和目标对象的类文字并返回目标对象 您可以多次使用Gson实例/对象因为它不会保持任何状态。 以下是一些说明使用GSON API的示例。 示例1对于简单对象 考虑以下模型对象以进行转换但是请记住您可以转换任何对象 模型对象 package in.ajduke.ap012;
/**
* An model for gson demo
*
* author ajduke
*/
public class ModelObject {String name;int val;boolean status;double f;public ModelObject(String name, int val, boolean status, double f) {super();this.name name;this.val val;this.status status;this.f f;}Overridepublic String toString() {return ModelObject [name name ,val val , status status , f f ];}} 以下是转换对象到json表示形式的清单 Example1.java final Gson gson new Gson();
// original object instantiation
ModelObject modelObject new ModelObject(myname, 12, true, 2.3);
System.out.println(toJson ---);
System.out.println(Original Java object : modelObject);
// converting an object to json object
String json gson.toJson(modelObject);
System.out.println(Converted JSON string is : json);System.out.println(fromJson----);
// getting object from json representation
System.out.println(Original JSON string is : json);
// converting json to object
ModelObject modelObject1 gson.fromJson(json, ModelObject.class);
System.out.println(Converted Java object : modelObject1); 请注意fromJson的签名它使用第二个参数作为目标对象的类文字。 输出如下 示例1-输出 toJson ---
Original Java object : ModelObject [namemyname, val12, statustrue, f2.3]
Converted JSON string is : {name:myname,val:12,status:true,f:2.3}
fromJson----
Original JSON string is : {name:myname,val:12,status:true,f:2.3}
Converted Java object : ModelObject [namemyname, val12, statustrue, f2.3]示例2对于通用对象 为了将通用对象从json表示形式转换回Java对象我们需要使用use extra对象如下所示 类型collectionType new TypeToken {具有类型信息的通用对象}{}。getType; 您需要向TypeToken类型参数信息提供目标类类型如上所示。 这是形成Type实例我们需要将它作为第二个参数传递给fromJson方法。 以下清单显示了将通用类或类从集合框架转换为json或从json转换的示例 GenericModel.java package in.ajduke.ap012;
/**
* An generified model for demo of gson conversion
* author ajduke
*/
public class GenericModelT {T value;public GenericModel(T value) {super();this.value value;}Overridepublic String toString() {return Model2 [value value ];}
} Example2.java Gson gson new Gson();System.out.println(A generic object demo);
// a generified object
GenericModelInteger model new GenericModel(12);// converting to json representation
String json gson.toJson(model);
System.out.println(json representation : json);// converting back to object
Type collectionType new TypeTokenGenericModelInteger() {
}.getType();
GenericModelInteger modelObj gson.fromJson(json, collectionType);
System.out.println(converted object representation: modelObj);System.out.println(\nA object from collection framework\n);
// for collection framework objects
ListString listOfString new ArrayList();
listOfString.add(ajduke);
listOfString.add(ajduchess);// conversion to json
String jsonStr gson.toJson(listOfString);
System.out.println(json representation : jsonStr);Type collectionType2 new TypeTokenListString() {
}.getType();
ListString listObj gson.fromJson(jsonStr, collectionType2);
System.out.println(converted object representation: listObj); 输出如下 例2-输出 A generic object demo
json representation :{value:12}
converted object representation: Model2 [value12]A object from collection frameworkjson representation :[ajduke,ajduchess]
converted object representation: [ajduke, ajduchess]示例3使用瞬态 如果您不想在json表示形式中包含某些字段则可以对变量声明使用transient修饰符然后在将其转换为json表示形式时GSON会忽略该变量。 但是当从json字符串转换回对象时它会根据变量类型初始化其默认值 。 考虑我们的ModelObject让我们从json表示中跳过整数val因此将其声明修改为transient如下面的清单所示 ModelObject2.java package in.ajduke.ap012;
/**
* An model for demo of gson conversion
*
* author ajduke
*/
public class ModelObject {String name;transient int val;boolean status;double f;public ModelObject(String name, int val, boolean status, double f) {super();this.name name;this.val val;this.status status;this.f f;}Overridepublic String toString() {return ModelObject [name name ,val val , status status , f f ];}
} 以下是清单 Example3.java Gson gson new Gson();
// original object
ModelObject modelObject new ModelObject(namesake, 50, true, 4.3);
System.out.print(Original Java object : );
System.out.println(modelObject);// converting to an json representation
String json gson.toJson(modelObject);
System.out.print(Converted JSON string is : );
System.out.println(json);// getting back the object from json representation
ModelObject modelObject3 gson.fromJson(json, ModelObject.class);
System.out.print(Converted Java object : );
System.out.println(modelObject3); 因此在进行转换时GSON忽略了上述内容并输出如下 example3-输出 Original Java object : ModelObject [namenamesake, val50, statustrue, f4.3]
Converted JSON string is : {name:namesake,status:true,f:4.3}
Converted Java object : ModelObject [namenamesake, val0, statustrue, f4.3]
Thats all folks, for GSON introduction !! 注意我已经为所有示例提供了小段代码要访问完整列表请访问github上的要点 下一步是什么 在接下来的几篇文章中我将向您展示GSON库的一些其他优点 所以请继续关注 参考来自ajduke博客博客的JCG合作伙伴 Abhijeet Sutar的 Google GSON入门 。 翻译自: https://www.javacodegeeks.com/2013/08/getting-started-with-google-gson.htmlgson 入门