文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

如何使用Gson将字符串转换成JsonObject和JsonArray

2023-06-29 01:59

关注

本篇内容介绍了“如何使用Gson将字符串转换成JsonObject和JsonArray”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

Gson将字符串转JsonObject和JsonArray

以下均利用Gson来处理

1.将bean转换成Json字符串:

public static String beanToJSONString(Object bean) {        return new Gson().toJson(bean);    }

2.将Json字符串转换成对象:

public static Object JSONToObject(String json,Class beanClass) {        Gson gson = new Gson();        Object res = gson.fromJson(json, beanClass);        return res;    }

注:转换后的对象使用前进行强转:例如bean bean1 = (bean)FormatUtil.JSONToObject(json, bean.class);

3.将Json字符串转换成JsonObject对象:

JsonObject returnData = new JsonParser().parse(jsonstr).getAsJsonObject();

4.将JsonArray类型的Json字符串解析成对象方法  

    Gson gson = new Gson();     JsonParser parser = new JsonParser();     JsonArray Jarray = parser.parse(jstring).getAsJsonArray();      ArrayList<channelSearchEnum> lcs = new ArrayList<channelSearchEnum>();      for(JsonElement obj : Jarray ){         channelSearchEnum cse = gson.fromJson( obj , channelSearchEnum.class);         lcs.add(cse);     }

或者

String json = "[{\"username\":\"test\"},{\"username\":\"test2\"}]"; System.out.println(new JsonParser().parse(json).getAsJsonArray().get(0).getAsJsonObject().get("username").getAsString());

5.获取JsonObject中指定key值对应的JsonArray对象:

String json= "{\"pids\":[\"1\",\"2\",\"3\"]}";System.out.println(new JsonParser().parse(json).getAsJsonObject().getAsJsonArray("pids").get(0).getAsString());

JSONObject与JSON互转

使用目的

目前数据交互大多以 JSON 字符串为信息传输,主要格式有

{"age":"22","name":"李四"}

[{"age":"21","name":"张三"}]

最常见的应用场景是前后端对接,第三方平台文档对接,下面展示转换使用。

引入 jar , 此处引入 com.alibaba.fastjson 版本的jar包

        <dependency>            <groupId>com.alibaba</groupId>            <artifactId>fastjson</artifactId>            <version>1.1.31</version>        </dependency>

建立测试类对象

class Student {    private String name;    private String age;     public String getName() {        return name;    }     public void setName(String name) {        this.name = name;    }     public String getAge() {        return age;    }     public void setAge(String age) {        this.age = age;    } }

转换

1、对象 转 JSON

        Student stu1 = new Student();        stu1.setName("张三");        stu1.setAge("21");        String stu1Json = JSONObject.toJSONString(stu1);

输出:

{"age":"21","name":"张三"}

2、JSON 转 对象

        Student stu1to = JSON.parseObject(stu1Json, Student.class);        System.out.println("json 转对象:");        System.out.println(stu1to);        System.out.println(stu1to.getName());        System.out.println(stu1to.getAge());

输出:

json 转对象:
Student@2aae9190
张三
21

注:JSON键名要与对象属性名相对应

3、对象数组 转 JSON

        Student stu2 = new Student();        stu2.setName("李四");        stu2.setAge("22");        List<Student> list = new ArrayList<Student>();        list.add(stu1);        list.add(stu2);         String listJson = JSONObject.toJSONString(list);        System.out.println(listJson);

输出:

[{"age":"21","name":"张三"},{"age":"22","name":"李四"}]

4、JSON 转 对象数组

        List<Student> studentList = JSON.parseArray(listJson, Student.class);        for (Student student : studentList) {            System.out.println(student.getName());        }

输出:

json 数组格式转换对象
张三
李四

5、JSON多级组合,适用于请求文档传输参数

        JSONObject jsona = new JSONObject();        jsona.put("number", "1");        JSONObject jsonb = new JSONObject();        jsonb.put("listMap", list);         JSONObject jsonAll = new JSONObject();        jsonAll.put("jsona", jsona);        jsonAll.put("jsonb", jsonb);        String jsonAllStr =JSONObject.toJSONString(jsonAll);        System.out.println(jsonAllStr);

输出:

{"jsona":{"number":"1"},"jsonb":{"listMap":[{"age":"21","name":"张三"},{"age":"22","name":"李四"}]}}

6、多级 JSON 组合

1、只获取指定字段,接上方示例代码

String getJsona = JSON.parseObject(jsonAllStr).getString("jsona");String strjsona = JSON.parseObject(getJsona, String.class); //指定获取 字段名对象信息,如果为单个String可不指定,这里作为实例写出System.out.println("只拿jsona信息");System.out.println(strjsona);

输出:

只拿jsona信息
{"number":"1"}

2、获取指定字段对象

    String getJsonb = JSON.parseObject(jsonAllStr).getString("jsonb");    String getJsonbb = JSON.parseObject(getJsonb).getString("listMap");    //这里被二级包裹,所以要获取2次才能转换对象数组    List<Student> strjsonb = JSON.parseArray(getJsonbb, Student.class);    System.out.println("只拿jsonbb信息");    System.out.println(strjsonb);

输出:

只拿jsonbb信息
[Student@3d04a311, Student@7a46a697]

“如何使用Gson将字符串转换成JsonObject和JsonArray”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注编程网网站,小编将为大家输出更多高质量的实用文章!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯