HJSON--更简洁的JSON

JSON 是我们平时使用非常频繁的数据格式,尤其在网络传输中非常受欢迎。大部分编程语言都支持各种格式。

但是作为配置文件还是有些许不足,最主要的一点是缺乏注释(其他比如低信噪比其实还可以接受),所以在 JSON 的基础上衍生出了更方便的作为配置文件的格式 HJSON 。

格式

HJSONJSON 格式的扩展,增加了注释,并去掉多余的标识符。

注释支持单行和多行,也支持Python脚本的#注释。

{
  // 注释
  // 可以使用 #, // 或者 /**/,
  // 数字
  key: 1
  // 字符串
  contains: everything on this line
  // 集合
  cool: {
    foo: 1
    bar: 2
  }
  // 数组
  list: [
    1,
    2,
  ]
  // 多行字符串
  realist:
    '''
    My half empty glass,
    I will fill your empty half.
    Now you are half full.
    '''
}

解析

HJSON的Github主页已经开发了很多编程语言的第三库来帮助我们解析,比如 C++、Java、PHP、Python、Js、Go、C#等等,也提供了许多编译器插件,比如IntelliJ、VsCode、Visual Studio、Sublime Text、Vim等等。

下面使用Python举例:

HJSON 支持 Python 2.5+ 和 Python 3.3+ 。

安装

pip install hjson

使用

和json库的API基本一致。

解析字符串

import hjson
text = """{
  foo: a
  bar: 1
}"""

r = hjson.loads(text)
print r
# 结果返回一个字典
# OrderedDict([('foo', 'a'), ('bar', 1)])

解析文件

import hjson
CONFIG_FILE = 'config.hjson'
with open(CONFIG_FILE) as f:
    json_dic = hjson.load(f)
    print json_dic

字典转HJSON

import hjson
print hjson.dumps({'foo': 'text', 'bar': (1, 2)})

结果

{
  foo: text
  bar:
  [
    1
    2
  ]
}

字典转JSON

兼容Json,所以也提供了转化方法。

print hjson.dumpsJSON(['foo', {'bar': ('baz', None, 1.0, 2)}])

结果

'["foo", {"bar": ["baz", null, 1.0, 2]}]'

总结

总的来说 HJSON 作为配置文件还是很不错的,值得使用。

你可能感兴趣的:(HJSON--更简洁的JSON)