Java-使用gson解析JSON数据

本文介绍了Java中如何使用Gson库进行JSON数据的解析和对象转换。讲解了JSON的基本语法,并展示了如何从JSON字符串创建Title类的对象,以及如何生成JSON数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Java中JSON操作

  • JSON 与 Xml

JSON类似Xml,比xml更小,更容易解析

  • JSON 语法

    1. 数据以 键值对 的方式保存

    2. 数据用逗号分隔

    3. 花括号保存 JSON对象

    4. 方括号保存 数组

    5. JSON数据的值可以是字符串(” “),数字,布尔值(true 或者 false),null,JSON数组([ ]),JSON对象({ })

示例:

①JSON对象,对象包含多个键值对:{"name" : "scb"  ,  "age":19  , "married":false } 

②JSON数组,数组可以包含多个对象:
{
"students" : [ 

{"name" : "A"  ,  "age":19 },
{"name" : "B"  ,  "age":19 },
{"name" : "C"  ,  "age":19 }  
] ,

"num" : 3
}
  • 一、读取JSON数据

使用库:google-gson       

常用方法: get getAs..

使用示例: 以上为例(将json数据存在class.txt中)

JsonParser jsonParser = new JsonParser(); //创建json解析器

// 通过parse方法获取最外层的json对象。

JsonObject jsonObject = 
(JsonObject)jsonParser.parse(new FileReader(class.txt)); 


System.out.println(""+jsonObject.get("num").getAsInt());

// 获取JSON数组
JsonArray jsonArray = jsonObject.get("students").getAsJsonArray(); 


// 依次获取数组中的元素

for(int i = 0 ; i<jsonArray.size();i++){

JsonObject subJsonObject = jsonArray.get(i).getAsJsonObject();

System.out.println(""+subJsonObject.get("name").getAsString());

System.out.println(""+subJsonObject.get("age").getAsInt());

}
  • 二、将JSON数据直接转换为对象

    1. json数据

      {
          "user":{
              "id":  10001,
              "name":  "scb"  
          },
          "title":  "json2object",
          "content":  "json.....",
          "imgs":[
              "http://....”,
              "http://....",
              "http://...."
          ]
      }
      
    2. Title类:

      public class Title {
      
          //使用注解来与json数据对应
      
          @SerializedName("title")
          private String mTitle;
      
          @SerializedName("content")
          private String mContent;
      
          @SerializedName("user")
          private User mUser;
      
          //亦可于外部
          public class User {
      
              @SerializedName("id")
              private String mID;
      
              @SerializedName("name")
              private String mName;   
      
          }
      
          @SerializedName("imgs")
          private List<String> mImgs;
      
      
      }
      
    3. 使用gson将json转换为对象:

      //jsonString为json数据字符串  
      
      Gson gson = new Gson();
      
      gson.fromJson(jsonString , Title.class);
      
  • 三、创建JSON数据

①使用库:google-gson

② 常用方法 : add添加其他对象/对象数组      addProperty添加该对象的属性

③ 示例

JsonObject newOne = new JsonObject();

// 往一个对象中添加属性
newOne.addProperty("num", 3);

//建立对象数组
JsonArray array = new JsonArray();

//第一个对象数组元素
JsonObject object1 = new JsonObject();

object1.addProperty("name", "A");

object1.addProperty("age", 19);

array.add(object1);

//第二个对象数组元素
JsonObject object2 = new JsonObject();

object2.addProperty("name", "B");

object2.addProperty("age", 19);

array.add(object2);

//第三个对象数组元素
JsonObject object3 = new JsonObject();

object3.addProperty("name", "C");

object3.addProperty("age", 19);

array.add(object3);


//往一个对象中添加其他对象/对象数组
newOne.add("students", array);

System.out.println(newOne.toString());
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值