java对于JSON的解析

这篇具有很好参考价值的文章主要介绍了java对于JSON的解析。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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、两者的区别

  • 区别在于JSONObject是一个{}包裹起来的一个对象(Object),而JSONArray则是[]包裹起来的一个数组(Array),JSONArray由一个或者多个JSONObjec 组成,说白点就是一个是数组一个是对象或字符串

  • 两者的区别就是JSONArray是数组,里面存着对象;JSONObect是对象,里面存的是字符串。通俗来说,JSONArray是运输机,里面装的是汽车,汽车里面坐的是人,而JSONObect是汽车,里面装的是人。

  • JSONArray和JSONObject再使用时候的第一个最重要的区别就是: JSONArray是一个一个加进去的;
    JSONObject是一对一对加进去的;

  • JSONObject最外面用的是 { } ,JSONArray最外面用的是 [ ]

5、JSONArray与List互转

5.1JSONArray转List

5.1.1.JSONArray字符串转List
//初始化JSONArray
JSONArray 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
//初始化JSONArray
JSONArray jsonArray = JSONArray.parseArray("[{\"name\":\"zhangsan\",\"age\":18},{\"name\":\"lisi\",\"age\":23}]");
//打印jsonArray
System.out.println(jsonArray.toJSONString());
//转List
List<Body> list = JSONArray.parseArray(jsonArray.toJSONString(), Body.class);
//打印List<Body>
System.out.println(list.toString());

结果

[{“name”:“zhangsan”,“age”:18},{“name”:“lisi”,“age”:23}]
[Body{name=‘zhangsan’, age=18}, Body{name=‘lisi’, age=23}]文章来源地址https://www.toymoban.com/news/detail-715996.html

5.2 .List转JSONArray

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

到了这里,关于java对于JSON的解析的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Mybatis实现JsonObject对象与JSON之间交互

    项目中使用PostGresql数据库进行数据存储,表中某字段为Json类型,用于存储Json格式数据。PG数据库能够直接存储Json算是一大特色,很多特定情境下使用直接存储Json字段数据能够大量节省开发时间,提高后台数据查询和转换效率。 如果我们有一个JSONObject属性的字段需要与数据

    2024年02月14日
    浏览(53)
  • 记录 JSONObject.parseObject json对象转换 对象字段为null

            使用websocket 接收消息都是String类型,没办法自定义实体类接收,所以接发都必须将json 转 对象 对象转 json。         这是我最开始的实体类,也就是转换的类型        websocket 前端还没完成开发,我使用postman 测试            刚开始我是按照平常发送请求的格式

    2024年02月10日
    浏览(39)
  • JSON转换:实体类和JSONObject互转,List和JSONArray互转,map和JSONObject,JSONarray互转(fastjson版)

    1.实体类和JSONObject互转 2.List和JSONArray互转 3.Map和JSONObject互转(同1.) 4.ListMap和JSONArray互转(同2.) 5.取数据 6.JSONArray转String{} 7.数组转jsonarry 注: 由上示例可知任意数据类型均可通过JSON.toJSON(xxx)转换成对应的JSONObject或JSONArray

    2024年01月19日
    浏览(54)
  • JSON转换:实体类和JSONObject互转,List和JSONArray互转(fastjson版)

         //1.java对象转化成String      String s=JSONObject.toJSONString(javaObject.class);       //2. java对象转化成Object         Object str=JSONObject.toJSON(javaObject.class);       //3.String类型转json对象        JSONObject jsonObject= JSONObject.parseObject(str);       //4. String转Object         Obj

    2024年02月14日
    浏览(48)
  • java解析json

    代码: 步骤:     定义一个JSON数组,用于将服务器返回的数据传入到一个JSONArray对象中;     然后循环遍历这个JSONArray,从中取出每一个元素(JSONObject对象);     调用getString()方法即可将数据取出。 代码: 参考:java解析json_java 解析json_五宝茶四娃的博客-CSDN博客

    2024年02月10日
    浏览(38)
  • 291_C++_发送json数据给对于的URL【JSON数据交互】

    元编程技巧 { boost::mpl::bool 的使用,在编译时进行条件编程时,能够表示和操作布尔值。这里进行了封装使用对 模版T 进行判断} + 对原JSON库 rapidjson::Document 的使用

    2024年02月05日
    浏览(63)
  • java:解析json的几种方式

    Java是一种流行的编程语言,它提供了很多实用的库和工具,在处理JSON数据时也不例外。在本文中,我们将介绍Java中如何解析JSON数据。 JSON是一种轻量级的数据交换格式,它已经成为Web应用程序中最流行的数据格式之一。Java提供了许多库来处理JSON数据,包括Jackson、Gson和JS

    2024年02月03日
    浏览(55)
  • Java 解析多层嵌套json数据及json字符串与对象的相互转换

    本文主要介绍java解析多层嵌套json数据以及字符串与JSON对象之间的相互转换,包括:json字符串的取值,json对象与字符串的相互转换,字符串转化为java对象,字符串转化为javaList列表等。 提示:以下是本篇文章正文内容,下面案例可供参考 数据格式:JSON实际上就是键值对(

    2024年02月04日
    浏览(63)
  • ClassCastException: com.alibaba.fastjson.JSONObject cannot be cast to 接口json数据转换异常。

    之前在使用fastjson进行接口传输数据时,碰到接收端数据转换异常问题,难了我好久。 例如:我们需要将json转换成实例集合 通常对JSON对象的转换操作是使用 强转 导致一些朋友对实例对象的操作也是进行强转 如下 这样的话我们在对 list 操作时就会报类似如下错误 所以之后

    2024年02月10日
    浏览(45)
  • java解析多层嵌套json字符串

    在java 程序中,经常会涉及到各种变量值提取的问题,下面给出简单的示例及说明: JSON实际上也是键值对(\\\"key\\\":\\\"value\\\"),key 必须是字符串,value 可以是合法的 JSON 数据类型(字符串, 数字, 对象, 数组, 布尔值或 null) value如果是字符串,用jsonobj.getString(\\\"key\\\")获取 value如果是数

    2024年02月15日
    浏览(63)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包