热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Gson转换json数据为对象

可以通过Gson使用两种方法,将json字符串转换为对象,以下面该段报文做测试{id:84041462,lastName:小华,age:32

可以通过Gson使用两种方法,将json字符串转换为对象,以下面该段报文做测试

{
    "id": 84041462,
    "lastName": "小华",
    "age":32,
    "balance":666255.32,
    "hobbyDesc": {
        "subject": "数学",
        "score":25,
        "sport_desc":"跑步有益健康"
    }    
}
1. 创建实体类,通过 fromJson方法将json数据封装进对象中

如上,将上面报文按层次解析并创建两个对象

import com.google.gson.annotations.SerializedName;

public class HobbyDesc {

    private String subject;
    private int score;
    @SerializedName("sport_desc")
    private String sportDesc;

    //***
public class Account {
    private String id;
    private String lastName;
    private int age;
    private double balance;
    private HobbyDesc hobbyDesc;
    
//
***

解析

String jsOnStr= "{\n" +
                "\t\"id\": 84041462,\n" +
                "\t\"lastName\": \"小华\",\n" +
                "\t\"age\":32,\n" +
                "\t\"balance\":666255.32,\n" +
                "\t\"hobbyDesc\": {\n" +
                "\t\t\"subject\": \"数学\",\n" +
                "\t\t\"score\":25,\n" +
                "\t\t\"sport_desc\":\"跑步有益健康\"\n" +
                "\t}\n" +
                "\t\n" +
                "}";

Account account = new Gson().fromJson(jsonStr,Account.class);

同时也可以看到,对象中定义为字符串类型的字段也可以接受json串的数值类型,没有转换问题。

2. 解析为jsonObject对象

直接使用Gson API解析

String jsOnStr= "{\n" +
                "\t\"id\": 84041462,\n" +
                "\t\"lastName\": \"小华\",\n" +
                "\t\"age\":32,\n" +
                "\t\"balance\":666255.32,\n" +
                "\t\"hobbyDesc\": {\n" +
                "\t\t\"subject\": \"数学\",\n" +
                "\t\t\"score\":25,\n" +
                "\t\t\"sport_desc\":\"跑步有益健康\"\n" +
                "\t}\n" +
                "\t\n" +
                "}";
JsonObject jsonObject = (JsonObject) new JsonParser().parse(jsonStr); 
System.out.println(
"id = "+jsonObject.get("id").getAsInt());//id = 84041462 System.out.println("id = "+jsonObject.get("id").getAsString());//id = 84041462 System.out.println("position = "+ jsonObject.get("hobbyDesc").getAsJsonObject().get("sport_desc").getAsString());//position = 跑步有益健康

参照jsonObject结构,可以了解Gson这种封装对象的方式,如果仅仅是取某值的话,可以采用这种方式,可以节约大量时间

 


推荐阅读
author-avatar
Ericke2702932972
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有