首页 > 编程知识 正文

json为什么要解析,json数据的解析方法有哪些

时间:2023-05-03 23:59:11 阅读:224834 作者:4831

The JSON5 Data Interchange Format is a proposed extension to JSON that aims to make it easier for humans to write and maintain by hand. It does this by adding some minimal syntax features directly from ECMAScript 5.1.

From: Standard JSON5

介绍

JSON(JavaScript Object Notation),一种轻量级的数据交换格式,源于JavaScript,为ECMAScript的一个子集。其易于阅读和编写、易于编码和解析等特性,已被广泛应用于尤其配置及http下的序列化等众多方面。

JSON5是对JSON的扩展,其目的是能够让人们(程序猿)更加容易的阅读和编写。
按照官方介绍,JSON5相对于JSON增加了以下特性(优势) summary-of-features:

对象

属性key可以不使用引号包含属性key可以使用单引号包含 { success: true, 'msg': "OK"}

数组

可以在尾部有多余逗号 [1, 2, 3, 4,]

字符串

可以以单引号包含支持多行字符串可以包含转义字符 { name: 'ManerFan', addr: 'KunMing Road, ShannXi, China', nickname: 'u5c0fu5e08u59b9'}

数字

可以使用16进制表示可以以小数点开头或结尾支持 Infinity, -Infinity, NaN 可以显示声明 + { intNum: +123, doubleNum: -.25e2, infNum: Infinity, nanNum: NaN, bigInt: 0x14FFFFFFFFFFFFFFFFFF}

注释

支持单行/多行注释 /** * json5 * json for humans */{ // 姓名 name: 'ManerFan', sex: 'male' // 性别} 解析

从编程语言方面讲,目前实现最为完善、维护最为频繁的还是js,目前json5已被广泛应用于NodeJS的前后端应用。

在GitHub上搜索json5,各语言的repo数如下图

于是,便萌生了编写解析json5代码的想法
参考tnjson,使用kotlin编写,已将代码开源至 manerfan-springboot-starter-json5

同时,在JSON5协议的基础上,对数字做了进一步扩展,支持使用下划线_对数字进行分隔

{ // 整型 "intDec": +123_456, /* 10进制 */ intHex: 0x1a_FFfF, /* 16进制 */ // 长整型 longDec: 1_234_567_890, longHex: -0X1F_ffff_aBcD_EfeF, // 浮点型 double1: .234, double2: +1.2e-2, double3: -5.6E3, // 大整型 bigintDec: 123_456_789_123_456_789_123_456, bigintHex: -0xABC_FFFF_FFFF_FFFF_FFFF}

有了kotlin语言的加持,便可以写出这样的语句

""" { // 整型 "intDec": +123_456, /* 10进制 */ intHex: 0x1a_FFfF, /* 16进制 */ // 长整型 longDec: 1_234_567_890, longHex: -0X1F_ffff_aBcD_EfeF, // 浮点型 double1: .234, double2: +1.2e-2, double3: -5.6E3, // 大整型 bigintDec: 123_456_789_123_456_789_123_456, bigintHex: -0xABC_FFFF_FFFF_FFFF_FFFF }""".trimIndent().parseMap() """ { str: 'Hello Json5!', num: -12_345, doubleNum: .3e-2, sub: { str:' u4f60u597d 不要闹! ', array: [123_456_789_123_456_789_123_456, -0xABC_FFFF_FFFF_FFFF_FFFF] } }""".trimIndent().parseObject(Obj::class.java)

更多示例见 json5-demo,欢迎围观

参考 Standard JSON5JSON for HumansGitHub - tnjson

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。