前言

JSONJSONObjectstructmap
JSONstruct

于是我也打算增加类似的功能,使用方式如下:

最后还加上了一个四则运算的功能。

面向对象的方式操作 JSON

tidwallAPI
key.[index][]
JSON

这样的语法使用个人觉得还是满符合直觉的,相信对使用者来说也比较简单。

tidwallResult
Map()/Array()JSONmapJSONObject

实现原理

在实现之前需要先定义一个基本语法,主要支持以下四种用法:

keyGet(json,"name")Get(json,"obj1.obj2.obj3.name")Get(json,"obj.array[0]")Get(json,"obj.array[0].obj2.obj3[1].name")
JSON
JSONJSONObject
tokentokenJSONObject
tokenJSONObject

我们以这段查询代码为例:

token

]

接着我们遍历语法的 token。如下图所示:

tokenKey
.[]JSONObject
obj_list[1.]JSONObject
ArrayindexEndArrayEndArray

有兴趣的可以看下解析过程的源码:

https://github.com/crossoverJie/xjson/blob/cfbca51cc9bc0c77e6cb9c9ad3f964b2054b3826/json.go#L46

对 JSON 做四则运算

JSON(int、float)