Json格式数据使用总结
发布日期:2021-05-14 13:23:24 浏览次数:19 分类:精选文章

本文共 3870 字,大约阅读时间需要 12 分钟。

Json数据处理指南

Json(JavaScript Object Notation,简化为Json)是一种轻量级的数据交换格式,采用key:value的文本格式存储和表示数据。其简洁易读的特点使其在数据传输和存储领域得到广泛应用。在实际开发中,我们经常需要处理Json格式数据,以完成数据解析、转换和操作任务。本文将为您详细介绍Json的相关知识,以及使用FastJson和Jackson两个Json解析工具的操作方法。


Json格式特点与数据结构

Json数据结构的核心特点是基于键值对的形式存储数据。键通常以字符串形式表示,值可以是字符串、数值、布尔值、Null值或其他Json对象。以下是Json数据结构的典型示例:

Json对象

{
"ID": 1001,
"name": "张三"
}
  • 特点:数据以花括号 {} 包裹,键值对以 键:值 格式出现,最后一个键值对不需要逗号。
  • 使用方式:适合表现单一对象的数据结构,键对应属性名,值对应属性值。

Json数组

{
"部门名称":"研发部",
"部门成员":[
{"ID": 1001, "name": "张三", "age": 24},
{"ID": 1002, "name": "李四", "age": 25},
{"ID": 1003, "name": "王五", "age": 22}
],
"部门位置":"xx楼21号"
}
  • 特点:数据以方括号 [{}] 包裹,内部是多个Json对象的集合,键可以重复,但值必须唯一。
  • 使用方式:适合表现多个对象的集合数据。

Json字符串

Json字符串则以双引号或单引号包裹,常用于数据传输或持久化存储。Json字符串需要满足以下条件:

  • 括紧字符必须是 "'
  • 字符串内的数据结构必须符合Json格式标准。

  • FastJson解析数据

    FastJson 是一个功能强大的Json处理库,支持复杂的数据解析和转换操作。FastJson 提供三个核心类:

    类关系图

    FastJson 的核心类JSONObjectJSONArray继承自Json,可以通过以下关系理解:

    Json
    ├── JSONObject(代表Json对象)
    ├── JSONArray(代表Json数组)
    └── JSON(用于数据转化)

    JSONObject类使用

    JSONObject类主要实现了Map接口,用于解析和操作Json对象。其主要特点如下:

  • 解析Json字符串
    可以通过 JSON.parseObject() 方法将Json字符串转化为JSONObject
  • 获取键值
    通过get() 方法根据键获取对应的值。默认值为null,具体取决于Json数据。
  • 类型检查
    提供多种类型转换方法(如getString()、getInt()、booleanValue()等),便于根据预期数据类型获取对应值。
  • JSONArray类使用

    JSONArray类相当于JSONObject的推广版,用于处理Json数组。主要特点如下:

  • 解析Json字符串
    使用 JSON.parseArray() 方法将Json字符串转化为JSONArray
  • 操作数组
    提供getJSONObject(int index) 方法获取指定索引下的JSONObject对象。配合size() 方法,可实现Json数组的遍历。
  • 迭代器支持
    通过 iterator() 方法获取迭代器,逐个处理JSONArray中的JSONObject
  • JSON类使用

    JSON类主要用于数据转换。其主要功能包括:

  • Json字符串到JavaBean
    使用 toJSONString() 方法,将任意Java对象转化为Json字符串。
  • JavaBean到Json字符串
    使用 parseObject() 方法,将Json字符串解析为相应的JavaBean对象。
  • 支持嵌套结构
    扩展性强,支持复杂的对象嵌套和多层次Json数据结构。

  • FastJson常用操作示例

    Json字符串转JSONObject

    String JSON_OBJ_STR = "{\"studentName\":\"lily\",\"studentAge\":12}";
    JSONObject jsonObject = JSON.parseObject(JSON_OBJ_STR);
    System.out.println("StudentName: " + jsonObject.getString("studentName") +
    ", StudentAge: " + jsonObject.getInteger("studentAge"));

    JSONObject转Json字符串

    JSONObject studentObj = new JSONObject();
    studentObj.put("studentName", "张三");
    studentObj.put("studentAge", 24);
    String jsonStr = JSON.toJSONString(studentObj);

    Json数组解析与处理

    String JSON_ARRAY_STR = "[{'studentName':'lily','studentAge':12},{'studentName':'lucy','studentAge':15}]";
    JSONArray jsonArray = JSON.parseArray(JSON_ARRAY_STR);
    // 遍历方式一
    int size = jsonArray.size();
    for (int i = 0; i < size; i++) {
    JSONObjectOBJ = jsonArray.getJSONObject(i);
    System.out.println("studentName: " + obj.getString("studentName") +
    ", StudentAge: " + obj.getInteger("studentAge"));
    }
    // 遍历方式二
    Iterator
    iterator = jsonArray.iterator();
    while (iterator.hasNext()) {
    JSONObject obj = iterator.next();
    // 由于这是JsonArray,直接转换即可
    }

    JavaBean转Json字符串

    Student lily = new Student("lily", 12);
    String jsonStr = JSON.toJSONString(lily);

    JackJson解析数据

    与FastJson类似,JackJson 是另一个流行的Json解析框架。JackJson 的主要特点是更高效的解析性能 和更灵活的数据处理方式。

    JackJson 提供对多种数据类型的支持,包括但不限于:

  • 复杂对象解析
    JackJson 可以直接解析传统JavaBean对象,适用于复杂嵌套数据的处理。
  • 类型参考
    可使用TypeReference类,通过明确指定目标类型自动解析复杂对象。
  • 反射机制
    JackJson支持通过反射机制进行解析,适用于广泛的Java类。

  • 前端Json操作

    对于前端开发人员来说,Json操作主要集中在以下几个方面:

  • 字符串解析
    使用 JSON.parse() 方法将Json字符串转化为JavaScript对象或数组。
  • 字符串生成
    使用 JSON.stringify() 方法将JavaScript对象或数组转化为Json字符串。
  • 数据更新
    可通过对JavaScript对象进行修改操作,保持与前后端数据的一致性。
  • 示例代码

    // 解析Json字符串
    var jsonObj = JSON.parse('{"name":"张三"}');
    console.log(jsonObj.name); // 输出"张三"
    // 生成Json字符串
    var str = JSON.stringify(obj);
    // 结果是一个标准的Json字符串

    Json数据转换与处理技巧

  • 复杂嵌套结构处理

    在处理嵌套Json数据时,确保您的JavaBean类与Json结构一致。每个键对应一个字段,值类型与Json数据一致。

  • 日志记录优化

    在解析过程中,可以选择对关键日志进行记录,这有助于后期排查问题。

  • 性能优化

    避免在高频率的数据解析任务中使用缓慢的解析方式。如果涉及大规模数据解析,可以考虑优化解析流程。


  • 最后

    Json数据处理是现代开发中不可或缺的一部分。学习Json格式及其解析工具的使用方法,是提升开发效率的关键。在实际开发中,可以根据具体需求灵活选择解析工具(如FastJson或JackJson),并结合自己的项目特点进行优化配置。通过不断的实践和总结,Json处理能力将逐步提高,您也能更熟练地应对各种复杂Json数据挑战。

    如果您对某些操作还不太熟悉,建议通过 Tcl/demo 或官方文档进一步学习和实践。祝您在Json开发的道路上走得愉快!

    上一篇:小程序图片水平垂直居中显示在view中
    下一篇:nginx使用

    发表评论

    最新留言

    路过,博主的博客真漂亮。。
    [***.116.15.85]2025年04月29日 08时16分38秒