文章详情

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

请输入下面的图形验证码

提交验证

短信预约提醒成功

java对于JSON的解析

2023-09-16 21:47

关注

java对于JSON的解析

1、数据类型

1.1、JSONObject

JSONObject是一种在Java中表示JSON对象的数据结构。它是一个无序的键值对集合,用花括号({})包围,并且每个键值对由冒号(:)分隔。

在Java中使用JSONObject,通常需要使用JSON库(如Jackson、Gson等)进行解析和操作。以下是一些常见的JSONObject操作:

  1. 创建JSONObject:

    JSONObject jsonObject = new JSONObject();
  2. 添加键值对到JSONObject:

    jsonObject.put("key1", "value1");jsonObject.put("key2", 123);jsonObject.put("key3", true);// 可以添加其他JSONObject或JSONArray作为值
  3. 获取JSONObject中指定键的值:

    Object value = jsonObject.get("key");
  4. 获取JSONObject中所有键的集合:

    Set<String> keys = jsonObject.keySet();
  5. 遍历JSONObject中的所有键值对:

    for (String key : jsonObject.keySet()) {    Object value = jsonObject.get(key);    // 处理每个键值对}
  6. 将JSONObject转换为字符串:

    String jsonString = jsonObject.toJSONString();
  7. 解析JSON字符串为JSONObject(使用JSON库的相关方法):

    JSONObject jsonObject = JSON.parseObject(jsonString); // 示例使用JSON.simple库

需要注意的是,具体的操作方式和方法名称可能会因使用的JSON库而有所不同。上述示例中的方法是基于JSON.simple库进行说明的,其他库可能会有自己的API。

通过JSONObject,您可以方便地处理和操作JSON对象数据,在Java中实现与JSON对象的交互。

1.2、JSONArray

JSONArray是一种在Java中表示JSON数组的数据结构。它是在一对方括号([])内包含零个或多个JSON值的有序集合。JSONArray可以包含不同类型的值,例如字符串、数字、布尔值、对象或其他数组。

在Java中使用JSONArray,通常需要使用JSON库(如Jackson、Gson等)进行解析和操作。以下是一些常见的JSONArray操作:

  1. 创建JSONArray:

    JSONArray jsonArray = new JSONArray();
  2. 添加元素到JSONArray:

    jsonArray.add("value1");jsonArray.add(123);jsonArray.add(true);// 可以添加其他JSONArray或JSONObject作为元素
  3. 获取JSONArray的长度(元素个数):

    int length = jsonArray.size();
  4. 获取JSONArray中指定位置的元素:

    Object element = jsonArray.get(index);
  5. 遍历JSONArray中的所有元素:

    for (Object element : jsonArray) {    // 处理每个元素}
  6. 将JSONArray转换为Java数组:

    Object[] array = jsonArray.toArray();
  7. 将JSONArray转换为字符串:

    String jsonString = jsonArray.toJSONString();
  8. 解析JSON字符串为JSONArray(使用JSON库的相关方法):

    JSONArray jsonArray = JSON.parseArray(jsonString); // 示例使用JSON.simple库

需要注意的是,具体的操作方式和方法名称可能会因使用的JSON库而有所不同。上述示例中的方法是基于JSON.simple库进行说明的,其他库可能会有自己的API。

通过JSONArray,您可以方便地处理和操作JSON数组数据,在Java中实现与JSON数组的交互。

1.3、ArrayList

ArrayList是Java中的一种动态数组(也称为可变大小的数组),它实现了List接口。与传统的静态数组相比,ArrayList具有自动扩展和缩小容量的能力,可以根据需要动态地调整其大小。

以下是一些常见的ArrayList操作:

  1. 创建ArrayList:

    ArrayList<String> list = new ArrayList<>(); // 创建一个存储字符串的ArrayList
  2. 添加元素到ArrayList:

    list.add("element1");list.add("element2");// 可以添加任意类型的对象到ArrayList
  3. 获取ArrayList中指定位置的元素:

    String element = list.get(index);
  4. 修改ArrayList中指定位置的元素:

    list.set(index, "new element");
  5. 删除ArrayList中指定位置的元素:

    list.remove(index);
  6. 删除ArrayList中指定元素的第一个匹配项:

    list.remove("element");
  7. 判断ArrayList是否包含指定元素:

    boolean contains = list.contains("element");
  8. 获取ArrayList的大小(包含的元素个数):

    int size = list.size();
  9. 遍历ArrayList中的所有元素:

    for (String element : list) {    // 处理每个元素}
  10. 将ArrayList转换为数组:

    String[] array = list.toArray(new String[0]);

需要注意的是,ArrayList可以存储任意类型的对象,而不限于基本数据类型。使用ArrayList时,您可以根据需要动态地添加、删除和修改元素,提供了更灵活的数据存储和操作方式。

2、java转JSON

2.1、javaBean对象转化为JSON串

public void javaBeanToJSON() {        Person person = new Person(1001,"张三",20,"2002-07-18 12:20:34"); // 有参构造函数(实体类)        // JSON类有静态方法直接调用可以将javaBean对象转化为JSON串        String jsonString = JSON.toJSONString(person,true);        System.out.println(jsonString);    }

结果

{"age":20,"birthday":"2002-07-18 12:20:34","eid":1001,"username":"张三"}

2.2、JavaBean对象的数组转化成JSON数组

public  void arrayToJSON() {        Person p1 = new Person(1001,"张三",20,"2002-07-18 12:20:34");        Person p2 = new Person(1002,"张四",21,"2003-07-18 12:20:34");        Person p3 = new Person(1003,"张五",22,"2004-07-18 12:20:34");        Person[] persopns = {p1,p2,p3};        // 数组转化成JSON格式的数组        String jsonString = JSON.toJSONString(persopns, true); // true  是否严格转化成json数组        System.out.println(jsonString);    }

结果

[{"age":20,"birthday":"2002-07-18 12:20:34","eid":1001,"username":"张三"},{"age":21,"birthday":"2003-07-18 12:20:34","eid":1002,"username":"张四"},{"age":22,"birthday":"2004-07-18 12:20:34","eid":1003,"username":"张五"}]

2.3、List集合转化成JSON格式

  public void listToJSON() {        Person p1 = new Person(1001,"张三",20,"2002-07-18 12:20:34");        Person p2 = new Person(1002,"张四",21,"2003-07-18 12:20:34");        Person p3 = new Person(1003,"张五",22,"2004-07-18 12:20:34");        List<Person> list = new ArrayList<Person>();        list.add(p1);        list.add(p2);        list.add(p3);//        Collections.addAll(list,p1,p2,p3);  // 一次性add        String jsonString = JSON.toJSONString(list,true);        System.out.println(jsonString);    }

结果

[{"age":20,"birthday":"2002-07-18 12:20:34","eid":1001,"username":"张三"},{"age":21,"birthday":"2003-07-18 12:20:34","eid":1002,"username":"张四"},{"age":22,"birthday":"2004-07-18 12:20:34","eid":1003,"username":"张五"}]

3、JSON转Java

2.1、JSON转化为JAVABean

    public void jsonToJavaBean() {        String json = "{\"age\":20,\"birthday\":\"2002-07-18 12:20:34\",\"eid\":1001,\"username\":\"张三\"}";        Person person = JSON.parseObject(json,Person.class); // Person.class 类的结构信息        System.out.println(person);    }

结果

Person{eid=1001, username='张三', age=20, birthday='2002-07-18 12:20:34'}

3.2、JSON转化为java集合

public void JSONToJavaList() {        String json = "[{\"age\":20,\"birthday\":\"2002-07-18 12:20:34\",\"eid\":1001,\"username\":\"张三\"},{\"age\":21,\"birthday\":\"2003-07-18 12:20:34\",\"eid\":1002,\"username\":\"张四\"},{\"age\":22,\"birthday\":\"2004-07-18 12:20:34\",\"eid\":1003,\"username\":\"张五\"}]";        List<Person> list = JSON.parseArray(json, Person.class);        System.out.println(list);    }

结果

[Person{eid=1001, username='张三', age=20, birthday='2002-07-18 12:20:34'},  Person{eid=1002, username='张四', age=21, birthday='2003-07-18 12:20:34'},  Person{eid=1003, username='张五', age=22, birthday='2004-07-18 12:20:34'}]

4、JSONObject与JSONArray

4.1、JSONArray

[    {        "key": "value",        "key2": "value2"    },    {        "key": "value",        "key2": "value2"    },    {        "key": "value",        "key2": "value2"    }]

[    {        "key": "value"    },    {        "key": "value"    },    {        "key": "value"    }]

4.2 JSONObject

{    "key": "value",    "key2": "value2",    "key3": "value3"}

4.3、两者的区别

5、JSONArray与List互转

5.1JSONArray转List

5.1.1.JSONArray字符串转List

//初始化JSONArrayJSONArray array=new JSONArray();array.add(0,"a");array.add(1,"b");array.add(2,"c"); List<String> list = JSONObject.parseArray(array.toJSONString(),String.class); System.out.println(list.toString());

结果:

[a, b, c]

5.1.2.JSONArray对象 转 List

//初始化JSONArrayJSONArray jsonArray = JSONArray.parseArray("[{\"name\":\"zhangsan\",\"age\":18},{\"name\":\"lisi\",\"age\":23}]");//打印jsonArraySystem.out.println(jsonArray.toJSONString());//转ListList<Body> list = JSONArray.parseArray(jsonArray.toJSONString(), Body.class);//打印ListSystem.out.println(list.toString());

结果

[{“name”:“zhangsan”,“age”:18},{“name”:“lisi”,“age”:23}]
[Body{name=‘zhangsan’, age=18}, Body{name=‘lisi’, age=23}]

5.2 .List转JSONArray

List<T> list = new ArrayList<T>();JSONArray jsonArray = JSONArray.parseArray(JSON.toJSONString(list));

来源地址:https://blog.csdn.net/qq_64356200/article/details/131914711

阅读原文内容投诉

免责声明:

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

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

软考中级精品资料免费领

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

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

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

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

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

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

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