美文网首页
JSON和GSON

JSON和GSON

作者: guanalex | 来源:发表于2017-12-03 17:26 被阅读16次

JSON简介

JSON的全称是”JavaScript Object Notation”,意思是JavaScript对象表示法,它是一种基于文本,独立于语言的轻量级数据交换格式,是一种用来交互数据的轻量级语言。

对于JSON的语法这里不做介绍,可以自己去看看。这里主要是要介绍JSON在java上的创建和解析,也就是如何把java的对象创建成JSON数据和把JSON数据取出来的一个过程,然后在说说GSON。Gson(又称Google Gson)是Google公司发布的一个开放源代码的Java库,主要用途为序列化Java对象为JSON字符串,或反序列化JSON字符串成Java对象。也就弥补了JSON的一个缺陷,JSON无法把JSON对象生成java对象,除此之外,GSON还具有一些个性化的方法。

JSON对象的创建

  1. 通过普通方式去创建一个JSON数据,例如
 {
     "name":"zhangsan",
     "age":20,
     "work":"程序猿"
   }

或者通过这种方式构建

   public void testJavaBean2Json(){
    JSONObject obj = new JSONObject();
          obj.put("name", "zhangsan");
           obj.put("age", 22);
          obj.put("work", "程序员");
        //显示
    System.out.println(obj.toString());
             //显示为一个json数组格式
    //[{"name":"zhangsan","age":22,"work":"程序员"}]
}

还是重点来写java对象生成json数据吧。大概意思就是我们先写一个普通User类,然后把这个对象的数据转成json数据。接下来是它的实现过程。

  public void testJavaBean2Json(){
    //创建JavaBean对象
    User user = new User("zhangsan",20,"程序猿");
    //准备将哪个Java对象转成JSON文本
    JSONArray jsonArray = JSONArray.fromObject(user);
    //获取转换后的JSON文本
    String json = jsonArray.toString();
    //显示
    System.out.println(json);
             //显示为一个json数组格式
    //[{"name":"zhangsan","age":20,"work":"程序猿"}]
}

再来看一个java的集合类型转成json数据。

 public void testListJavaBean2Json(){
    List<User> userList = new ArrayList<User>();
    userList.add(new User("lisi",21,"工程师");
    userList.add(new User("wangwu",22,"工程师"));
    JSONArray jsonArray = JSONArray.fromObject(userList);
    String json = jsonArray.toString();
    System.out.println(json);
            //打印出的数据
    //[{"name":"lisi","age":21,"work":"工程师"},{"name":"lisi","age":21,"work":"工程师"}]
}

那么生成json数据后怎么把json数据的个别属性取出来呢?因为我们把java对象转成json数据后是一个json数组,所以我们需要把它循环打印出来。

   public void testjavabean() throws JSONException{
    jsonUser juser=new jsonUser("zhangsan",10000.1);
    JSONArray json=new JSONArray().fromObject(juser);
    //String  sjson=json.toString();
    //System.out.println(sjson);

    for(int i=0;i<json.size();i++){
    System.out.println("name:"+json.getJSONObject(i).getString("name"));
    System.out.println("age:"+json.getJSONObject(i).getInt("age"));
    System.out.println("age:"+json.getJSONObject(i).getInt("work"));
    
    }
}   

JsonObject和JsonArray区别就是JsonObject是对象形式,JsonArray是数组形式 。所以先写一个json对象,用JSONObject解析。

  public void testjavabean() throws JSONException{
  String json="{\"name\":\"zhangsan\",\"age\":\"22\" }";
    org.json.JSONObject  jsonobject= new     org.json.JSONObject(json);
    String name=jsonobject.getString("name");
    String age=jsonobject.getString("age");
    System.out.println(name);
    System.out.println(age);

  }

GSON

利用GSON生成json数据,这里用到的是利用java类来生成json对象。如下

User  user=new  User();
 user.setname("zhangsan");
 user.setage(20);
//构建一个GSON
  GSON gson=new  GSON();
 system.out.println(gson.toJson(user));

利用GSON解析json数据为java对象数据

      public void testjavabean() {
      String json="{\"name\":\"zhangsan\",\"age\":\"22\" }";
         GSON  gson=new GSON();
            User usergson=gson.fromJson(json,User.class);
    System.out.println(usergson.toString());
  }

GSON的更多方法和使用还有待去了解,这只是gson的简单的构建和解析过程。所以利用GSON的好处在于可以正向生成json和反向解析成java类的一个好处。

相关文章

网友评论

      本文标题:JSON和GSON

      本文链接:https://www.haomeiwen.com/subject/wrsabxtx.html