当前位置: 首页 > article >正文

jsonl与json区别

文章目录

  • 前言
  • 一、区别
    • 1.JSON 示例
    • 2.JSONL 示例
    • 3.代码示例
  • 二、何时使用 JSONL?
  • 总结


前言

JSONL(JSON Lines) 和 JSON 都是 JSON(JavaScript Object Notation)格式的变体,但它们的结构和使用场景有所不同。


一、区别

特性JSONJSONL
格式整个文件是一个标准的 JSON 结构每一行是一个独立的 JSON 对象
数据结构[] 代表数组,{} 代表对象纯文本,每行是一个 JSON 对象,不包含 []
解析方式需要完整解析整个JSON 可以逐行解析,每行都是一个独立的 JSON
适用场景配置文件、小型数据存储大规模数据处理、流式处理(日志、机器学习数据)
处理方式一次性加载到内存可逐行读取,节省内存

1.JSON 示例

JSON 文件通常是一个完整的对象或数组:

{
  "users": [
    {
      "id": 1,
      "name": "Alice"
    },
    {
      "id": 2,
      "name": "Bob"
    }
  ]
}

或:

[
  {
    "id": 1,
    "name": "Alice"
  },
  {
    "id": 2,
    "name": "Bob"
  }
]

这种格式必须整体解析,如果数据量过大,解析会占用大量内存。

2.JSONL 示例

JSONL(JSON Lines)格式是一种按行存储 JSON 对象的纯文本格式,每一行都是一个完整的 JSON 对象:

{"id": 1, "name": "Alice"}
{"id": 2, "name": "Bob"}
{"id": 3, "name": "Charlie"}
注意:JSONL 文件没有逗号,每行是独立的 JSON 对象,不是 JSON 数组!

JSONL 的特点

  • 支持流式处理:可以逐行读取,而不需要一次性加载整个文件。
  • 适合大规模数据:如日志处理、大规模数据存储(如 Elasticsearch、BigQuery)。
  • 易扩展:每行独立,便于追加和更新数据。

3.代码示例

  1. 解析 JSON
import json

with open("data.json", "r", encoding="utf-8") as f:
    data = json.load(f)  # 一次性加载整个 JSON
    print(data)
  1. 解析 JSONL
import json

with open("data.jsonl", "r", encoding="utf-8") as f:
    for line in f:
        data = json.loads(line)  # 逐行解析
        print(data)

二、何时使用 JSONL?

使用场景适合 JSON适合 JSONL
配置文件
小规模数据存储
日志存储/分析
流式数据处理(如 Kafka)
机器学习训练数据
大规模数据(BigQuery, Elasticsearch)

总结

✅ JSON 适用于:结构化、小规模数据,一次性加载解析。
✅ JSONL 适用于:大规模数据、流式处理,每行是独立 JSON。

如果你的数据量很大,或者是日志流式数据(比如 RAG 应用存储检索数据),建议使用 JSONL。


http://www.kler.cn/a/587905.html

相关文章:

  • 卷积神经网络(CNN)的主要架构
  • leetcode 75.颜色分类(荷兰国旗问题)
  • 【胶囊网络】完美复现Hinton论文99.23%
  • 社区版Uos20.9从源码编译QT5.15.2
  • 【商城实战(33)】解锁版本迭代与更新策略
  • 网络华为HCIA+HCIP网络基础
  • 79.ScottPlot的MVVM实现 C#例子 WPF例子
  • PPT 相关资料介绍
  • 梧桐:开发者的命令行效率应用
  • TK矩阵:引领TikTok营销的新革命
  • 第R8周:RNN实现阿尔兹海默病诊断
  • 【unity实战】用unity封装一个复杂全面且带不同射击模式的飞机大战射击系统
  • node.js-node.js作为服务器,前端使用WebSocket(单个TCP连接上进行全双工通讯的协议)
  • Linux--git
  • 并发编程2
  • 【IntelliJ IDEA】idea导入node_modules卡死,idea 忽略 node_modules 索引
  • 如何用正则表达式爬取古诗文网中的数据(python爬虫)
  • 【NLP】 8. 处理常见词(Stopwords)的不同策略
  • 蓝桥杯---链表题目1
  • stack_queue常用接口及模拟实现