技术控

    今日:130| 主题:49488
收藏本版 (1)
最新软件应用技术尽在掌握

[其他] Golang中一个不错的处理 JSON 的库 go-dproxy

[复制链接]
美麗的邂逅∮ 发表于 2016-10-8 22:04:33
111 5

立即注册CoLaBug.com会员,免费获得投稿人的专业资料,享用更多功能,玩转个人品牌!

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
Golang 自己就带了 JSON (encoding/json) 处理的库,也有第三方的    simplejson之类的库,但总是感觉不如Python这样的动态语言方便,在 Python 里,数组和字典的处理都很方便,和 JSON 互转也非常简单。  
      encoding/json最大的问题是不够灵活,需要预先定义很多的    struct来进行编解码,这样对于处理结构不定的 JSON 文件非常不方便。  
  这里介绍一个名为    go-dproxy的库,非常方便和简单,不需要预先定义    struct,还可以类似 XPath 那样查找。  
  下面是一个例子:
           
  1. package main
  2. import (
  3.   "encoding/json"
  4.   "fmt"
  5.   "github.com/koron/go-dproxy"
  6. )
  7. func main() {
  8.   var v interface{}
  9.   json.Unmarshal([]byte(`{
  10.       "name": "dproxy",
  11.   "strings": [ "a", "b", "c" ],
  12.   "numbers": [ 1,2,3 ],
  13.   "mixs": ["a", 1, "b"],
  14.   "tags": {
  15.     "key-1": "value-1",
  16.     "key-2": 100,
  17.     "key-3": [4,5,6]
  18.   }
  19. }`), &v)
  20.   // s == "dproxy", got a string.
  21.   s, _ := dproxy.New(v).M("name").String()
  22.   fmt.Printf("1. name is %s\n", s)
  23.   // err: not matched types: expected=int64 actual=string: name
  24.   _, err := dproxy.New(v).M("name").Int64()
  25.   fmt.Printf("2. err is %s\n", err)
  26.   // can be chained. n == 3, got a int64
  27.   n, _ := dproxy.New(v).M("numbers").A(2).Int64()
  28.   fmt.Printf("3. n is %d\n", n)
  29.   // got value-1
  30.   s, _ = dproxy.New(v).M("tags").M("key-1").String()
  31.   fmt.Printf("4. key-1 is %s\n", s)
  32.   // err.Error() == "not found: data.kustom", wrong query can be verified.
  33.   _, err = dproxy.New(v).M("data").M("kustom").String()
  34.   fmt.Printf("5. err is %s\n", err)
  35.   // n == 5
  36.   n, err = dproxy.Pointer(v, "/tags/key-3/1").Int64()
  37.   fmt.Printf("6. n is %d\n", n)
  38. }
复制代码
       或者从    gist下载这个文件,执行:  
           
  1. $ go get github.com/koron/go-dproxy
  2. $ go build dproxy-test.go
  3. $ ./dproxy-test
复制代码
       即可。
  总之,这个库处理JSON应该算是非常简单,希望对你有所帮助。
友荐云推荐




上一篇:江湖外卖O2O系统积分商城华丽变身 全新玩法你不得不服
下一篇:Android Push Notification Using Firebase Cloud Messaging (FCM)
酷辣虫提示酷辣虫禁止发表任何与中华人民共和国法律有抵触的内容!所有内容由用户发布,并不代表酷辣虫的观点,酷辣虫无法对用户发布内容真实性提供任何的保证,请自行验证并承担风险与后果。如您有版权、违规等问题,请通过"联系我们"或"违规举报"告知我们处理。

我是老妖 发表于 2016-10-9 04:28:22
二货回帖,二出新生活
回复 支持 反对

使用道具 举报

是每地个 发表于 2016-10-9 12:22:57
人生如戏,全靠演技。
回复 支持 反对

使用道具 举报

kid412 发表于 2016-10-10 12:07:12
kid412回复的不是帖子,是寂寞!
回复 支持 反对

使用道具 举报

wh5 发表于 2016-10-10 13:10:35
顶起!
回复 支持 反对

使用道具 举报

xplmn888 发表于 2016-10-14 08:39:34
小时候缺钙,长大了缺爱。
回复 支持 反对

使用道具 举报

*滑动验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

我要投稿

推荐阅读

扫码访问 @iTTTTT瑞翔 的微博
回页顶回复上一篇下一篇回列表手机版
手机版/CoLaBug.com ( 粤ICP备05003221号 | 文网文[2010]257号 )|网站地图 酷辣虫

© 2001-2016 Comsenz Inc. Design: Dean. DiscuzFans.

返回顶部 返回列表