平面设计素材免费,做搜狗pc网站优化点,郑州移动网站建设,wordpress加速 redis介绍 这是以前的Google GSON入门的后续文章#xff0c;其中显示了有关使用Google Gson的入门资料。 本文显示了GSON库的一些其他优点。 由于有很多关于这些额外功能的文章要写#xff0c;所以我将长篇文章分成2个系列#xff0c;因此#xff0c;这是其中一部分#xff0c… 介绍 这是以前的Google GSON入门的后续文章其中显示了有关使用Google Gson的入门资料。 本文显示了GSON库的一些其他优点。 由于有很多关于这些额外功能的文章要写所以我将长篇文章分成2个系列因此这是其中一部分在下一篇文章中我将发布其余内容。 使用GSON库的好处在于它不需要任何注释或配置即可进行简单转换。 尽管它使用默认配置来使事情变得简单。 GSON具有从Java对象创建Json的灵活性反之亦然。 我们真正的Gson类包含json转换的许多默认值但是我们可以使用GsonBuilder类覆盖默认值。 因此让我们开始吧。 漂亮格式的JSON输出 当您打印使用Gson创建的json输出字符串时您将在一行中看到输出如下所示 {name:ajduke,languagesKnown:[Java,Scala,JavaScript]} 这是称为压缩模式的默认格式化模式。 当您的json具有很多字段和组件时阅读起来会变得更加困难。 为了正确格式化该库具有漂亮的漂亮格式化模式该模式将每一字段打印在一行中 要使用此功能您需要使用GsonBuildersetPrettyPrinting创建Gson实例如以下清单所示 以下是我们的类其对象将转换为其json表示形式 class Developer {private String name;private String classz;ListString languagesKnown;public Developer() {name ajduke;languagesKnown new ArrayList();languagesKnown.add(Java);languagesKnown.add(Scala);languagesKnown.add(Ruby);}
} 注意行号 7个使用 Gson gson new Gson();
String json gson.toJson(new Developer());
System.out.println(********* Compact mode ***********);
System.out.println(json);GsonBuilder gsonBuilder new GsonBuilder();
Gson prettyGson gsonBuilder.setPrettyPrinting().create();
json prettyGson.toJson(new Developer());
System.out.println(\n ******* Pretty formatting *********);
System.out.println(json); 上面的输出是 ********* Compact mode ***********
{name:ajduke,languagesKnown:[Java,Scala,Ruby]}******* Pretty formatting *********
{name: ajduke,languagesKnown: [Java,Scala,Ruby]
}在JSON输出中包含空字段 默认情况下在转换为Json格式时在转换中会忽略空值字段。 这仅仅是为了使输出清晰紧凑。 但是我们可以通过使用GsonBuilder #serializeNulls创建Gson实例来覆盖此行为。 以下清单显示 class Developer {private String name;private String classz;ListString languagesKnown;public Developer() {name ajduke;classz Developer;languagesKnown new ArrayList();languagesKnown.add(Java);languagesKnown.add(Scala);languagesKnown.add(Ruby);}
} 请注意第.11行 Gson gson new Gson();System.out.println(Default behaviour );
GsonBuilder gsonBuilder new GsonBuilder();Gson prettyGson gsonBuilder.setPrettyPrinting().create();
String json prettyGson.toJson(new Developer());
System.out.println(json);System.out.println(Including the nulls );
Gson includeNullsGson gsonBuilder.serializeNulls().create();
String json2 includeNullsGson.toJson(new Developer());
System.out.println(json2); 注意上面的输出包括classz Default behaviour
{name: ajduke,languagesKnown: [Java,Scala,Ruby]
}
Including the nulls
{name: ajduke,classz: null,languagesKnown: [Java,Scala,Ruby]
}包括自定义名称 默认情况下json输出字段名称与类字段名称相同。 Gson提供了使用注释更改此方法的方法。 为此我们需要使用为该字段提供的serilizedName批注我们需要在输出json中更改名称。 因此我们的Developer类将名称更改为firstName class Developer {SerializedName(firstName)private String name;private String classz;ListString languagesKnown;public Developer() {name ajduke;languagesKnown new ArrayList();languagesKnown.add(Java);languagesKnown.add(Scala);languagesKnown.add(Ruby);}
} 如果我们跟随 Gson gson new Gson();
String json gson.toJson(new Developer());
System.out.println(********* Compact mode ***********);
System.out.println(json);GsonBuilder gsonBuilder new GsonBuilder();
Gson prettyGson gsonBuilder.setPrettyPrinting().create();
json prettyGson.toJson(new Developer());
System.out.println(\n ******* Pretty formatting *********);
System.out.println(json); 然后在输出中我们将使用“ firstName”而不是“ name” ********* Compact mode ***********
{firstName:ajduke,languagesKnown:[Java,Scala,Ruby]}******* Pretty formatting *********
{firstName: ajduke,languagesKnown: [Java,Scala,Ruby]
}向/从流写入JSON Gson库对每个方法toJson和fromJson都有一个重载分别用于写入和读取流。 简单来说您可以将json输出写入文件字符或缓冲区并且可以从任何Reader流中读取。 以下清单显示了如何在File流中写入和读取JSON package in.ajduke.ap013;import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.google.gson.annotations.SerializedName;public class GsonEx {public static void main(String[] args) throws IOException {Gson gson new Gson();System.out.println(Writing JSON to file ....);// using try with resourcestry (FileWriter writer new FileWriter(d:/output.json)) { gson.toJson(new Developer(), writer); // writing to file}System.out.println(Reading from file.. );FileReader fileReader new FileReader(d:/output.json);dev gson.fromJson(fileReader, Developer.class);System.out.println(dev);}
}class Developer {private String name;private String classz;ListString languagesKnown;public Developer() {name ajduke;languagesKnown new ArrayList();languagesKnown.add(Java);languagesKnown.add(Scala);languagesKnown.add(Ruby);}Overridepublic String toString() {return Developer [name name , classz classz , languagesKnown languagesKnown ];}
} 参考 使用Google GSON额外的东西来自ajduke博客博客的JCG合作伙伴 Abhijeet Sutar的 第一部分 。 翻译自: https://www.javacodegeeks.com/2014/01/using-google-gson-extra-goodies-part-i.html