json java文档_JSON5 中文文档

JSON5是什么?

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

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

对象:属性key可以不使用引号包含

属性key可以使用单引号包含{

success: true,

'msg': "OK"

}

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

字符串:可以以单引号包含

支持多行字符串

可以包含转义字符{

name: 'ManerFan',

addr: 'KunMing Road,\

ShannXi,\

China',

nickname: '\u5c0f\u5e08\u59b9'

}

数字:可以使用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数如下图

bc7fdfc03a181785f939cc7c3cabcadc.gif

于是,便萌生了编写解析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:'

\u4f60\u597d

不要闹!

',

array: [123_456_789_123_456_789_123_456, -0xABC_FFFF_FFFF_FFFF_FFFF]

}

}

""".trimIndent().parseObject(Obj::class.java)

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

参考

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值