资讯专栏INFORMATION COLUMN

如何使用JSON和GSON

changfeng1050 / 2256人阅读

摘要:说明本项目是在中创建项目来进行对于格式文件的操作在项目中引入对于支持开发的的依赖,在文件中添加一下依赖使用指南使用的原生的方法生成一个创建一个对象使用键值对对的形式添加对象的一些属性王小二蓝翔理发挖掘机这是一个注释使

说明:本项目是在MyEclipse中创建Maven项目来进行对于json格式文件的操作

</>复制代码

  1. maven项目中引入对于支持json开发的的依赖,在pom.xml文件中添加一下依赖:
  2. org.json
  3. json
  4. 20090211
1. JSON使用指南

</>复制代码

  1. **使用jsonobject的原生的方法生成一个jsonobject**

----------

</>复制代码

  1. <1>创建一个jsonobject对象
  2. JSONObject wamgxiaoer = new JSONObject();
  3. <2>使用键值对对的形式添加对象的一些属性
  4. Object nullobj = null;
  5. wamgxiaoer.put("name", "王小二");
  6. wamgxiaoer.put("age", 25.2);
  7. wamgxiaoer.put("birthday", "1990-01-01");
  8. wamgxiaoer.put("schooll", "蓝翔");
  9. wamgxiaoer.put("major",new String[]{"理发","挖掘机"});
  10. wamgxiaoer.put("has_girfriend", false);
  11. wamgxiaoer.put("car", nullobj);
  12. wamgxiaoer.put("house", nullobj);
  13. wamgxiaoer.put("comment", "这是一个注释");

//使用tostring方法将json格式的数据转化成一个string类型的数据进行输出

</>复制代码

  1. System.out.println(wamgxiaoer.toString());
使用Map方式生成jsonobject对象

<1>生成一个map类型的对象
Map wamgxiaoer = new HashMap();

</>复制代码

  1. Object nullobj = null;
  2. wamgxiaoer.put("name", "王小二");
  3. wamgxiaoer.put("age", 25.2);
  4. wamgxiaoer.put("birthday", "1990-01-01");
  5. wamgxiaoer.put("schooll", "蓝翔");
  6. wamgxiaoer.put("major",new String[]{"理发","挖掘机"});
  7. wamgxiaoer.put("has_girfriend", false);
  8. wamgxiaoer.put("car", nullobj);
  9. wamgxiaoer.put("house", nullobj);
  10. wamgxiaoer.put("comment", "这是一个注释");

使用jsonobject的tomap方法讲一个map类型的对象转换成一个jsonobject对象,最后利用jsonobject对象的tostring方法转换成一个字符类型数据
System.out.println(new JSONObject(wamgxiaoer).toString());

使用Java Bean方法构建json

<1>创建一个Java bean

</>复制代码

  1. package bean;
  2. import java.util.Arrays;
  3. import com.google.gson.annotations.SerializedName;
  4. public class Diaosi {
  5. // @SerializedName("NAME")
  6. private String name;
  7. private String school;
  8. private boolean has_girlfriend;
  9. private double age;
  10. private Object car;
  11. private Object house;
  12. private String[] major;
  13. private String coment;
  14. private String birthday;
  15. private transient String ignore;
  16. public String getIgnore() {
  17. return ignore;
  18. }
  19. public void setIgnore(String ignore) {
  20. this.ignore = ignore;
  21. }
  22. public String getName() {
  23. return name;
  24. }
  25. public void setName(String name) {
  26. this.name = name;
  27. }
  28. public String getSchool() {
  29. return school;
  30. }
  31. public void setSchool(String school) {
  32. this.school = school;
  33. }
  34. public boolean isHas_girlfriend() {
  35. return has_girlfriend;
  36. }
  37. public void setHas_girlfriend(boolean has_girlfriend) {
  38. this.has_girlfriend = has_girlfriend;
  39. }
  40. public double getAge() {
  41. return age;
  42. }
  43. public void setAge(double age) {
  44. this.age = age;
  45. }
  46. public Object getCar() {
  47. return car;
  48. }
  49. public void setCar(Object car) {
  50. this.car = car;
  51. }
  52. public Object getHouse() {
  53. return house;
  54. }
  55. public void setHouse(Object house) {
  56. this.house = house;
  57. }
  58. public String[] getMajor() {
  59. return major;
  60. }
  61. public void setMajor(String[] major) {
  62. this.major = major;
  63. }
  64. public String getComent() {
  65. return coment;
  66. }
  67. public void setComent(String coment) {
  68. this.coment = coment;
  69. }
  70. public String getBirthday() {
  71. return birthday;
  72. }
  73. public void setBirthday(String birthday) {
  74. this.birthday = birthday;
  75. }
  76. @Override
  77. public String toString() {
  78. return "Diaosi [name=" + name + ", school=" + school + ", has_girlfriend=" + has_girlfriend + ", age=" + age
  79. + ", car=" + car + ", house=" + house + ", major=" + Arrays.toString(major) + ", coment=" + coment
  80. + ", birthday=" + birthday + "]";
  81. }
  82. }

<2>使用自己创建的Java bean的方法来设定属性

</>复制代码

  1. private static void creatByJavaBean() {
  2. Diaosi wamgxiaoer = new Diaosi();
  3. wamgxiaoer.setName("王小二");
  4. wamgxiaoer.setAge(25.2);
  5. wamgxiaoer.setBirthday("1990-01-01");
  6. wamgxiaoer.setSchool("蓝翔");
  7. wamgxiaoer.setMajor(new String[]{"理发","挖掘机"});
  8. wamgxiaoer.setHas_girlfriend(false);
  9. wamgxiaoer.setCar(null);
  10. wamgxiaoer.setHouse(null);
  11. wamgxiaoer.setComent("这是一个注释");
  12. System.out.println(new JSONObject(wamgxiaoer));
  13. }

从文件解析json对象
<1>首先在pom.xml文件引入Commons-io来使用一些对于文件的操作,例如:

</>复制代码

  1. commons-io
  2. commons-io
  3. 2.4

<2>获取json文件所在的路径从而获取一个文件对象

</>复制代码

  1. File file = new File(ReadJsonSample.class.getResource("/wangxiaoer.json").getFile());

<3>获取文件中的内容:
String content = FileUtils.readFileToString(file);
<4>创建一个jsonobject对象来解析json格式的数据
JSONObject jsonObject = new JSONObject(content);
<5>通过json的方法来获取一些属性对于的值

</>复制代码

  1. if(!jsonObject.isNull("name")){
  2. System.out.println("姓名是:"+jsonObject.getString("name"));
  3. }
  4. if(!jsonObject.isNull("nickname")){
  5. System.out.println("姓名是:"+jsonObject.getString("nickname"));
  6. }
  7. System.out.println("年龄是:"+jsonObject.getDouble("age"));
  8. System.out.println("是否有女朋友:"+jsonObject.getBoolean("has_girlfriend"));
  9. JSONArray majorArray = jsonObject.getJSONArray("major");
  10. for(int i = 0;i
  11. 2..GSON使用指南
    GSON是由谷歌公司提出来的出来json格式数据的方法
    <2>引入关于GSON的依赖

  12. </>复制代码

    1. com.google.code.gson
    2. gson
    3. 2.8.2
  13. <3>创建一个类的实例并为其赋值

  14. Diaosi wamgxiaoer = new Diaosi();

  15. </>复制代码

    1. wamgxiaoer.setName("王小二");
    2. wamgxiaoer.setAge(25.2);
    3. wamgxiaoer.setBirthday("1990-01-01");
    4. wamgxiaoer.setSchool("蓝翔");
    5. wamgxiaoer.setMajor(new String[]{"理发","挖掘机"});
    6. wamgxiaoer.setHas_girlfriend(false);
    7. wamgxiaoer.setCar(null);
    8. wamgxiaoer.setHouse(null);
    9. wamgxiaoer.setComent("这是一个注释");
    10. wamgxiaoer.setIgnore("不要看见我!");
  16. <4>创建一个GSON对象
    Gson gson = new Gson();
    <5>使用GSON对象的tostring方法将其转换成一个string类型的对象
    System.out.println(gson.toJson(wamgxiaoer));
    <6>GSONbuilder创建个性化的json格式的数据,并通过gsonbuilder的create方法来创建一个gson对象

  17. </>复制代码

    1. GsonBuilder gsonBuilder = new GsonBuilder();
    2. gsonBuilder.setPrettyPrinting();
    3. gsonBuilder.setFieldNamingStrategy(new FieldNamingStrategy() {
    4. public String translateName(Field f) {
    5. if(f.getName().equals("name")){
    6. return "NAME";
    7. }
    8. return f.getName();
    9. }
    10. });
    11. Gson gson = gsonBuilder.create();
    12. System.out.println(gson.toJson(wamgxiaoer));
    13. }
  18. GSON解析json格式数据
    <1>获取json的数据文件内容

  19. </>复制代码

    1. File file = new File(ReadJsonSample.class.getResource("/wangxiaoer.json").getFile());
    2. String content = FileUtils.readFileToString(file);
  20. <2>创建一个GSON对象

  21. </>复制代码

    1. Gson gson =new GsonBuilder().setDateFormat("yyyy-MM-dd").create();
  22. <3>使用GSON进行反解析

  23. Gson gson =new GsonBuilder().setDateFormat("yyyy-MM-dd").create();

  24. </>复制代码

    1. DiaosiWithBirthday wangxiaoer = gson.fromJson(content, DiaosiWithBirthday.class);
    2. System.out.println(wangxiaoer.getBirthday().toLocaleString());
    3. System.out.println(wangxiaoer.getMajor());
    4. System.out.println(wangxiaoer.getMajor().getClass());
  25. 想了解更多关于GSON的可以在GitHub上查看GSON的官方文档,最后附上项目的下载地址:
    链接:http://pan.baidu.com/s/1pLHp5ph 密码:khbb

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/67943.html

相关文章

  • 慕课网_《JSON快速入门(Java版)》学习总结

    摘要:时间年月日星期日说明本文部分内容均来自慕课网。慕课网教学示例源码无个人学习源码第一章课程概述课程介绍课程须知本课程面向所有使用语言进行开发的小伙伴。 时间:2017年05月21日星期日说明:本文部分内容均来自慕课网。@慕课网:http://www.imooc.com教学示例源码:无个人学习源码:https://github.com/zccodere/s... 第一章:课程概述 1-1 ...

    shiina 评论0 收藏0
  • 将多个JSON字段映射到单个Java字段

    摘要:简介本文中,教大家如何使用和将不同的字段映射到单个字段中。这两个注解将帮助我们把属性映射到同一字段。因此,将知道文档中映射到字段的其他字段的名称。 简介 本文中,教大家如何使用Jackson和Gson将不同的JSON字段映射到单个Java字段中。 Maven依赖 为了使用Jackson和Gson库,我们需要在POM中添加以下依赖项: com.google.code.gson ...

    printempw 评论0 收藏0
  • gson-plugin告别Json数据类型不一致(一)

    摘要:六原理说明侵入编译流程,在编译过程中,修改库的字节码,修改解析相关的方法,在数据类型不一致的时候,跳过当前字段的解析。 一、目录 1.gson-plugin告别Json数据类型不一致(一)2.gson-plugin基础源码分析(二)3.gson-plugin深入源码分析(三)4.gson-plugin如何在JitPack发布(四) 看完这4篇文章,对Gson解析会有更加深刻的认识,对A...

    canopus4u 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<