jsonl - JSON Lines

文章目录

    • 一、关于 JSON Lines
      • 1.UTF-8编码
      • 2.每一行都是有效的JSON值
      • 3.行分隔符为`'\n' `
      • 4.建议的惯例
    • 二、示例
      • 1、Better than CSV
      • 2、Easy Nested Data
    • 三、Json 相关工具应用


一、关于 JSON Lines

  • 官网:https://jsonlines.org (下文翻译自此)
  • json 官网:https://www.json.org/json-en.html
  • Validator : https://jsonlines.org/validator/

jsonl:JSON Lines,也称为换行分隔的JSON。

JSON Lines是一种方便的格式,用于存储可以一次处理一条记录的结构化数据。它可以很好地与unix风格的文本处理工具和shell管道配合使用。这是一个很好的日志文件格式。它也是一种在协作进程之间传递消息的灵活格式。


JSON Lines格式有三个要求:

1.UTF-8编码

JSON允许只使用ASCII转义序列 对Unicode字符串进行编码,但是在文本编辑器中查看这些转义时很难读取。JSON Lines文件的作者可以选择 转义字符 来处理纯ASCII文件。

UTF-8以外的编码 在解码为UTF-8时 不太可能有效,因此有可能意外误解字符JSON Lines文件中的行数较低。


2.每一行都是有效的JSON值

最常见的值是对象或数组,但允许使用任何JSON值。

参见json.org有关JSON值的更多信息。


3.行分隔符为'\n'

这意味着还支持 \r\n,因为在解析JSON值时会隐式忽略周围的空白。

文件*中的最后一个字符可能是行分隔符,它将被视为不存在行分隔符。


4.建议的惯例

JSON Lines文件可以使用文件扩展名.jsonl保存。

建议使用 流压缩器(如 gzipbzip2)以节省空间,从而生成 .jsonl.gz.jsonr.bz2 文件。

MIME类型可以是 application/jsonl,但这还没有标准化;如果能为编写RFC提供任何帮助,我们将不胜感激(请参阅问题)。

文本编辑程序将文本文件的第一行称为“第1行”。JSON Lines文件中的第一个值也应称为“值1”。


二、示例

1、Better than CSV

["Name", "Session", "Score", "Completed"]
["Gilbert", "2013", 24, true]
["Alexa", "2013", 29, true]
["May", "2012B", 14, false]
["Deloise", "2012A", 19, true] 

CSV似乎很容易,以至于许多程序员都自己编写了代码来生成它,而且几乎每个实现都是不同的。

处理损坏的CSV文件是一项常见且令人沮丧的任务。CSV没有标准编码,没有标准的列分隔符和多字符转义标准。字符串是单元格值唯一支持的类型,因此一些程序试图猜测正确的类型。

JSON Lines干净无歧义地处理表格数据。单元格(Cells)可以使用标准的JSON类型。

最大的缺失是 流行的电子表格程序的导入/导出过滤器,以便非程序员可以使用这种格式。


2、Easy Nested Data

{"name": "Gilbert", "wins": [["straight", "7♣"], ["one pair", "10♥"]]}
{"name": "Alexa", "wins": [["two pair", "4♠"], ["two pair", "9♠"]]}
{"name": "May", "wins": []}
{"name": "Deloise", "wins": [["three of a kind", "5♣"]]}

JSON Lines’ biggest strength is in handling lots of similar nested data structures. One .jsonl file is easier to work with than a directory full of XML files.

If you have large nested structures then reading the JSON Lines text directly isn’t recommended. Use the “jq” tool to make viewing large structures easier:

JSON Lines最大的优势在于处理大量类似的嵌套数据结构。

一个.jsonl文件比一个满是XML文件的目录更容易使用。

如果您有大型嵌套结构,则不建议直接读取 JSON Lines文本。使用 jq 工具可以更容易地查看大型结构:

grep pair winning_hands.jsonl | jq .
{"name": "Gilbert", "wins": [["straight", "7♣"], ["one pair", "10♥"]]
}
{"name": "Alexa", "wins": [["two pair", "4♠"], ["two pair", "9♠"]]
}

三、Json 相关工具应用

pytest-reportlog 是一个pytest插件,它以JSON Lines格式编写测试报告数据

NDJSON 是一种类似的格式,也允许使用空行

Bubbles 支持JSON Lines数据存储

Logstash 通过 json_lines codec 支持JSON Lines

plot.ly 将 JSON Lines 用于其流式数据API

Graylog GELF 是日志消息的格式,它们的流实际上是 JSON Lines。

Scrapy是一个用于web抓取和爬网的框架,它长期以来一直支持并推荐JSON Lines——它甚至可能创造了这个术语。

ClickHouse 是一个开源的面向列的DBMS。它支持JSON Lines作为 JSONEachRow 格式的输入和输出。

Dataflow kit 是一个用Go编写的web抓取开源框架。JSON Lines是支持的存储结果的格式之一。

dart 在运行测试时使用JSON Lines作为可能的报告程序之一。

Apache Spark使用JSONL来读取和写入JSON数据。

ArangoDB 是一个开源的多模型数据库。JSON Lines格式允许按顺序导入大量文档(通过arangoimport )。

Rumble 是一个运行在Spark之上的JSONiq引擎。它可以处理具有数十亿个对象的JSON Lines格式的数据集。

Neo4j 开源图形数据库通过其 标准库程序 apoc.export/import.json 支持JSONL导出和导入,以允许节点和关系的流处理。

petl 是一个通用的Python包,用于提取、转换和加载数据表。它允许在本地和远程文件系统和云中的许多数据库和文件格式(包括JSON Lines)之间导入和导出文档/记录。

BigQuery 使用JSON Lines作为支持的格式之一将数据加载到数据库中。

Airbyte 是一个开源数据集成工具,它使用JSON Lines在从文件/API/数据库中提取数据的容器化源应用程序和将数据写入仓库的容器化目标应用程序之间进行通信。

Shopify GraphQL Bulk Operations API ,专为从Shopify商店导出非常大的数据而设计,以JSONL文件的形式返回结果。

CSS HTML Validator for Windows v22.0211+ 现在支持JSON Lines语法检查。

Go Standard library’s json.Encoder 默认生成JSON Lines。解码器解析连接的JSON,它与JSON Lines兼容,但没有JSON Lines严格

Golang JSONL library

Miller 支持JSON Lines格式作为输入。

Mattermost 是一个协作工具,使用JSON Lines格式进行批量数据导入。


2024-05-30(四)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/847599.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何利用Web Components提高前端开发效率?

Web Components 是一种用于构建可复用的可扩展组件的技术。它为前端开发提供了一种模块化的方法,可以提高开发效率。下面是一些利用 Web Components 提高前端开发效率的方法: 代码重用:Web Components 可以创建可独立使用的组件,这…

别再emo了,还不赶紧去考PMP,搞钱要紧~

自从疫情之后经济大不如从前,现在大环境都不好,很多公司都在裁员,像我朋友就在上个月被裁掉了,虽说拿了补偿但也不可能靠那点补偿生活的,所以我朋友找了很久的工作,但是由于大环境的缺失所以导致他的薪资直…

搭建 3D 智慧农场可视化

运用图扑自主研发的 HT 产品,全程零代码搭建 3D 轻量化 Low Poly 风格的智慧农场可视化解决方案,无缝融合 2D、3D 技术,1:1 还原农场的区域规划,展开对农作物间的网格化管理。

js控制并发请求的最优解和js控制调用频率,大量请求延迟执行

js控制并发请求的最优解 思路&#xff1a;维护一个运行池&#xff0c;一个等待队列&#xff0c;出一个进一个&#xff0c;控制运行池的大小 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta http-equiv&q…

深入探讨:Kubernetes 与低代码的原理及应用实战

随着云计算技术的飞速发展&#xff0c;云原生技术逐渐成为企业数字化转型的重要支撑。其中&#xff0c;Kubernetes和低代码作为云原生的两大关键技术&#xff0c;不仅为企业提供了灵活高效的IT解决方案&#xff0c;更助力企业快速响应市场变化&#xff0c;提升竞争力。本文将详…

webSecurity安全

0x01 简介 https://www.electronjs.org/zh/docs/latest/tutorial/security#6-%E4%B8%8D%E8%A6%81%E7%A6%81%E7%94%A8-websecurity 大家好&#xff0c;今天跟大家讨论的是 Electron 的安全配置选项 —— webSecurity 这在之前的文章 《Electron安全与你我息息相关》 中就已经提…

C# 解决 Excel 自动适应列宽的问题

目录 问题现象 原因分析 范例运行环境 解决问题 生成测试文本 实现自适应 小结 问题现象 通过 COM 操作 Excel 自动适应列宽的方法是 AutoFit 方法&#xff0c;该方法适于自动适应列宽或行高。 最近在我们的一款应用里发现效果并没有符合预期&#xff0c;我们提供了一…

【调试笔记-20240604-Linux-为 OpenWrt-23.05 添加自己的 feed 软件包】

调试笔记-系列文章目录 调试笔记-20240604-Linux-为 OpenWrt-23.05 添加自己的 feed 软件包 文章目录 调试笔记-系列文章目录调试笔记-20240604-Linux-为 OpenWrt-23.05 添加自己的 feed 软件包 前言一、调试环境操作系统&#xff1a;Ubuntu 22.04.4 LTS编译环境调试目标 二、…

HTML、HTML5一览

文章目录 HTML简介标签基本标签格式化文本链接图像块级元素列表表格框架表单实体 HTML5 此篇用于优化csdn第一篇文章 HTML 简介 HTML 是用来描述网页的一种语言。 HTML 指的是超文本标记语言: HyperText Markup Language HTML 不是一种编程语言&#xff0c;而是一种标记语言…

数据中心的中台前端风格大屏设计开发

数据中心的中台前端风格大屏设计开发

DevOps全面综述:从概念到实践

一、背景与概述 1.1 DevOps的起源与发展 DevOps&#xff08;Development and Operations的缩写&#xff09;是软件工程领域中的一种文化和实践方法&#xff0c;旨在促进开发团队与运维团队之间的协作&#xff0c;从而实现更高效、更可靠的软件交付。DevOps起源于敏捷软件开发方…

Spring类加载机制揭秘:深度解析“准备”阶段

1. 引言 在Spring框架中&#xff0c;类加载机制是一个至关重要的环节&#xff0c;关系到Spring容器如何动态地加载、解析和管理应用程序中的类。其中&#xff0c;“准备”阶段作为类加载过程中的一个关键步骤&#xff0c;对于理解整个类加载机制具有重要意义。本文将对Spring类…

深入了解 Postman 中的变量

在我们进行 API 开发和测试时&#xff0c;使用诸如 Postman 之类的工具可以极大地简化工作流程&#xff0c;提高效率。Postman 的一个强大功能就是变量&#xff08;Variables&#xff09;。利用变量&#xff0c;我们可以使我们的请求变得更加动态和灵活&#xff0c;避免重复输入…

猫毛过敏的克星!宠物空气净化器,铲屎官的终极武器~

现在很多人都喜欢养猫&#xff0c;但约有10%的人会对猫咪产生过敏反应。常见的症状包括打喷嚏、流鼻涕&#xff0c;严重时甚至会呼吸困难。 过敏源依附在宠物的毛发和皮屑上&#xff0c;通过空气传播&#xff0c;遍布家中的各个角落&#xff0c;如地面、衣物和家具。这不仅增加…

期权和股权有哪些含义?股权和期权有哪些区别?

今天带你了解期权和股权有哪些含义&#xff1f;股权和期权有哪些区别&#xff1f;股权是有限责任公司或股份有限公司股东对公司享有的人身权和财产权的综合权利。期权是指赋予持有者在特定日期或之前以固定价格购买或出售资产的权利的合同。 期权有哪些含义&#xff1f; 期权是…

Echarts 取消鼠标滑动时产生的竖线

文章目录 问题分析问题 当我们在坐标轴中使用多组数据时会产生如下效果,出现两根竖线,不太美观 分析 axisPointer 属性设置为 none(建议使用) 在 ECharts 中,鼠标滑动时产生的竖线是由 tooltip 组件的 axisPointer 属性控制的。要取消这一功能,可以将 tooltip 组件的 …

Java18新特性有哪些

Java 18 于 2022 年 3 月 22 日正式发布&#xff0c;它带来了一些新特性和改进&#xff0c;主要包括以下几点&#xff1a; JEP 400: UTF-8 by Default123&#xff1a;JDK 将 UTF-8 设置为默认字符集&#xff0c;这使得依赖于默认字符集的 API 在所有实现、操作系统、区域设置和…

加入不正确的位置编码会破坏掉原本的信息吗?

会 位置编码的作用 在Transformer中&#xff0c;位置编码的主要作用是让模型感知输入序列中各个词的位置。因为Transformer完全依赖自注意力机制&#xff0c;它本身并没有序列信息&#xff0c;位置编码的引入就是为了补充这一点。 加法操作的合理性 位置编码通过加法操作与…

震惊!没想到这个国产数据库可以白嫖!

最近很多网友私信我&#xff0c;问我们MogDB是怎么售卖的&#xff0c;你们的具体策略是怎么样的&#xff1f; 其实这个话题我在一些微信群都已经讲过&#xff0c; 这里干脆来一篇公众号文章&#xff0c;详细说一说&#xff01; MogDB是什么&#xff1f; MogDB是 EnMotech openG…

Python群发邮件的功能如何实现?怎么使用?

Python群发邮件需要哪些库支持&#xff1f;如何使用Python发信&#xff1f; 对于Python开发者来说&#xff0c;实现群发邮件功能是一项非常有用的技能&#xff0c;无论是用于营销、通知还是其他目的。AokSend将介绍如何使用Python来实现群发邮件的功能&#xff0c;让你轻松管理…