当前位置: 首页 > news >正文

北京市网站建设_网站建设公司_电商网站_seo优化

青岛网站关键字优化,公司网站模板免费版,steam网站代做,淮安j经济开发区建设局网站GSON是Google开发的Java API#xff0c;用于转换Java对象和Json对象。本文讨论并提供了使用API的简单代码示例。更多关于GSON的API可以访问#xff1a;http://sites.google.com/site/gson/. 本文是GSON系列文章的第一篇。本文是其他文章的基础#xff0c;因此不需要任何GSON…GSON是Google开发的Java API用于转换Java对象和Json对象。本文讨论并提供了使用API的简单代码示例。更多关于GSON的API可以访问http://sites.google.com/site/gson/. 本文是GSON系列文章的第一篇。本文是其他文章的基础因此不需要任何GSON或JSON经验。第二篇文章提供了关于GSON反序列化从JSON到Java的示例第三篇文章提供了关于GSON序列化从Java到JSON的示例。 下面列出的所有代码都可以在https://java-creed-examples.googlecode.com/svn/gson/Simple%20Gson%20Example. 找到。绝大部分示例都不会包含全部的代码可能会忽略一些片段这些片段都与讨论的示例无关。读者可以从上面的链接下载或查阅所有代码。 读者需要有基础的Java教程知识和很基础的Maven(首页)知识。这里展示的代码使用maven来下载GSON库。把项目导入到Springsource Tool Suite推荐的IDE无需任何配置。 下载与安装 在使用GSON API工作之前你需要下载库(jar文件)并将其包含到类路径中。库连同源代码和Java文档都可以从http://code.google.com/p/google-gson/downloads/list下载。下载完毕后添加gson-version.jar到类路径。对于那些偏好使用Maven管理依赖(JAR文件)的读者添加如下依赖到pom.xml。 1 2 3 4 5 dependency     groupIdcom.google.code.gson/groupId     artifactIdgson/artifactId     version2.2.4/version /dependency 需要修改 version2.2.4/version。本文所有代码示例使用上面列出的版本。pom.xml文件拷贝可以在这里找到。 如果这个库用于web应用请确保在WEB-INF/lib文件夹中保持一份拷贝。或者GSON库可以放到应用服务器提供给web应用。 一个简单示例 GSON API提供一个类文件GsonJava文档它被用来处理Java和JSON对象的转换。可以调用默认构造器或如下代码的形式使用GsonBuilderJava文档类创建这个类的实例。GsonBuilder类是可定制化的并且允许开发者按需实例化Gson。 1 2 3 4 5 6 7 8 9 10 11 12 package com.javacreed.examples.gson.part1; import com.google.gson.Gson; import com.google.gson.GsonBuilder; public class SimpleExample1 {     public static void main(String[] args) {         Gson gson new GsonBuilder().create();         gson.toJson(Hello, System.out);         gson.toJson(123, System.out);     } } 在上面的例子中我们创建了一个Gson实例并把Java String和int转化为JSON对象。以上代码命令行里的输出结果如下 1 Hello123 这不是火箭科学但它是一个开始。注意上述的结果都将输入到命令行。该toJason()方法有两个参数Java对象转换为JSON和可追加Java的文档的一个实例。我们可以很容易地改变了一个文件或网络流。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 package com.javacreed.examples.gson.part1; import java.io.FileWriter; import java.io.IOException; import java.io.Writer; import com.google.gson.Gson; import com.google.gson.GsonBuilder; public class SimpleExample2 {     public static void main(String[] args) throws IOException {         Writer writer new FileWriter(Output.json);         Gson gson new GsonBuilder().create();         gson.toJson(Hello, writer);         gson.toJson(123, writer);         writer.close();     } } 注意 为什么变量声明为Writer类型而实际类型是FileWriter? 尽量使用泛型是一个很好的方法。在上例中我们只使用了Appendable和Writer接口定义的方法。使用泛型使代码更易于移植和维护下面是个不好的例子。 注意上面例子中我们没有正确处理流(Writer)。理想情况下资源在finaly块 教程 中关闭或者用在try-with-resource教程中。我们忽略了这个是为了保持代码简洁。 1 2 3 4 5 6 7 public static void main(String[] args) throws IOException {     try (Writer writer new FileWriter(Output.json)) {         Gson gson new GsonBuilder().create();         gson.toJson(Hello, writer);         gson.toJson(123, writer);     } } 以上代码生成文件包含JSON对象的Output.json。注意这里我们使用了字符流而不是字节流。因为toJson()方法需要一个Appendanble实例而字节流不能实现Appendable接口所以我们使用了字符流。Appendable接口处理字符而不是字节。Java提供了InputStreanReaderJava文档和OutputStreamWriterJava文档类进行字节流与字符流的转换如下面的例子。 注意 注意使用InputStreamREader和OutputStreamWriter类时如果不提供编码或者字符集转换将使用平台默认字符集。这将降低代码的可移植性且在其他平台上运行将可能产生错误行为。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 package com.javacreed.examples.gson.part1; import java.io.FileOutputStream; import java.io.IOException; import java.io.OutputStreamWriter; import java.io.Writer; import com.google.gson.Gson; import com.google.gson.GsonBuilder; public class SimpleExample3 {     public static void main(String[] args) throws IOException {         try(Writer writer new OutputStreamWriter(new FileOutputStream(Output.json) , UTF-8)){             Gson gson new GsonBuilder().create();             gson.toJson(Hello, writer);             gson.toJson(123, writer);         }     } } 如你所见我们只需要改变实例的一部分。代码的剩余部分没有任何变化。这就是使用接口代替类作为变量类型的好处之一。 使用JSON对象 比方说我们需要使用JSON对象并加载他们为Java对象。假设web服务器查询时产生如下JSON对象 1 2 3 4 5 {   NAME:Albert Attard,   P_LANGUAGE:Java,   LOCATION:Malta } 此JSON对象包含3个不同值的域。比如我们需要使用JSON对象并创建一个Java对象来展示它。为了使这个例子更有趣假设我们只关心name和location域。 首先创建一个Java类来表示name和location。类命名为Person。类的名字无关紧要但域的名字必须一致。域名必须匹配(大小写敏感)JSON对象中的名字。更进一步类必须包含一个默认构造函数即使它被设置为private。如下所示name和location域在JSON中是大写的。JSON中域P_LANGUAGE被忽略了因为Java对象中不包括该名称的域。请理解域名不遵守Java命名规范暂时只是为了简化。更多内容将在第2部分中讨论。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 package com.javacreed.examples.gson.part2; public class Person {     private String NAME;     private String LOCATION;     // Getters and setters are not required for this example.     // GSON sets the fields directly using reflection.     Override     public String toString() {         return NAME - LOCATION;     } } 准备好Java对象后我们可以读取JSON对象并加载为Java对象如下代码所示。为了模拟真实情况我们使用了字节流作为输入。还要注意JSON内容保存在resource文件夹的文件里(这不是常规做法)。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 package com.javacreed.examples.gson.part2; import java.io.IOException; import java.io.InputStreamReader; import java.io.Reader; import com.google.gson.Gson; import com.google.gson.GsonBuilder; public class JsonToJava {     public static void main(String[] args) throws IOException {         try(Reader reader new InputStreamReader(JsonToJava.class.getResourceAsStream(/Server1.json), UTF-8)){             Gson gson new GsonBuilder().create();             Person p gson.fromJson(reader, Person.class);             System.out.println(p);         }     } } 输出如下 1 Albert Attard - Malta Gson解析JSON对象并创建了一个Person类的实例并打印到命令行中。 嵌套JSON对象 让我们对上面的例子更进一步以下所示JSON代码段包含了一个嵌套对象。 1 2 3 4 5 6 7 8 9 {   NAME:Albert Attard,   P_LANGUAGE:Java,   LOCATION:Malta,   EXAM: {     SUBJECT:Programming,     GRADE:4.5   } } EXAM域由两个域组成分别是SUBJECT和GRADE。我们需要修改Person类的定义来包含EXAM域并创建一个新的Java类来表示EXAM该类包含SUBJECT和GRADE域。 我们首先创建新的类来表示嵌套对象。就像之前讨论那样类名无关紧要但是域名必须与JSON中的域名匹配。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 package com.javacreed.examples.gson.part3; public class Exam {     private String SUBJECT;     private double GRADE;     // Getters and setters are not required for this example.     // GSON sets the fields directly using reflection.     Override     public String toString() {         return SUBJECT - GRADE;     } } 现在我们可以修改Person类引入一个与JSON中EXAM同名的域类型为Exam。注意下面的Person类与前一个span style”color: #ff0000;”位于/span不同的包。 1 2 3 4 5 6 7 8 9 10 11 12 13 package com.javacreed.examples.gson.part3; public class Person {     private String NAME;     private String LOCATION;     private Exam EXAM;     Override     public String toString() {         return NAME - LOCATION ( EXAM );     } } 注意所需的变化是最小的因为Gson动态发现(使用反射)类和它的域。本文不包含反射对于更多关于反射的信息请参考Reflection in Action. 最后让我们尝试新的变化。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 package com.javacreed.examples.gson.part3; import java.io.IOException; import java.io.InputStreamReader; import java.io.Reader; import com.google.gson.Gson; import com.google.gson.GsonBuilder; public class JsonToJava {     public static void main(String[] args) throws IOException {         try(Reader reader new InputStreamReader(JsonToJava.class.getResourceAsStream(/Server2.json), UTF-8)){             Gson gson new GsonBuilder().create();             Person p gson.fromJson(reader, Person.class);             System.out.println(p);         }     } } JsonToJava类没有做任何改变因为Gson使用了模型(Person和Exam类)将Json映射成Java。 结论 即使JSON可能是一个新概念但它十分简单与直接。此外相比于需要增加标签进行消息/数据转换而不断膨胀的笨重的XML它因为简单更加流行。需要指出JSON是JavaScript的一个子集JavaScript将它作为一个完美的方案来进行数据交换例如网页。GSON API使它更便于使用即使在这里没有讨论的部分它也提供了强大的灵活性。 欲了解更多GSON的例子请移步第2部分我们会探索更复杂的例子并讨论如何使用GSON解串器来完全控制反序列化过程。 相关文章 GSON Annotations ExampleGson TypeAdapter Example Serialise Large ObjectsGSON Serialiser ExampleGson TypeAdapter ExampleGSON Deserialiser Example 原文链接 javacreed 翻译 ImportNew.com - liken译文链接 http://www.importnew.com/16630.html   from: http://www.importnew.com/16630.html转载于:https://www.cnblogs.com/GarfieldEr007/p/6821667.html
http://www.lebaoying.cn/news/55925.html

相关文章:

  • 国内专门做旅游攻略的网站wordpress登陆页
  • seo网站页面优化济宁市做网站的公司
  • 网站开发语言net国家认可的教育培训机构
  • 贸易型企业网站建设wordpress app for ios 3.4下载
  • 西安网站建设公司哪家好衡水安徽网站建设
  • 常州做网站设计海淀网站建设多少钱
  • 个人外贸网站河北专业网站建设
  • 少女免费观看片tv如何建设和优化一个网站
  • 哪个网站可以做公众号封面合肥网站建设哪家好价格
  • 制作的大型网站多少钱企业宣传网站建设说明书
  • 通辽建设工程网站腾讯云网站备案吗
  • 做货代的有哪些网站网站要怎么备案
  • 庐阳网站快速排名诸城网站建设定制
  • 北京黄村专业网站建设价钱定制网站建设公司费用
  • 外国人做免费视频网站北京市e窗口工商登记
  • 网站上线前准备电子商务毕业设计网站
  • 有口碑的做网站oa软件
  • 网站怎么做IPv6精准营销方式有哪些
  • 合肥寒假兼职工网站建设网站建设厌倦
  • 网站建设费的税率高德地图可以搜索国外吗
  • 如何看出一个网站优化的是否好龙口网站建设联系电话
  • 海南住房和城乡建设网站wordpress 最新
  • 网站突然显示 建设中做网站需要数据库吗
  • 医院做网站怎么做淘宝发布网站建设
  • 博物馆网站建设情况说明叮当app制作
  • 珠海做网站需要多少钱廊坊seo关键字排名
  • 网站通知发送邮件什么是网络营销的重要内容和基本职能
  • 京东的电子商务网站建设淘宝网页html模板代码
  • 龙岩网站设计招聘网建筑公司网站关键词有哪些
  • 河南网络科技网站建设网页设计与制作教程电