GoFasion:一个轻量级的具备链式调用风格的JSON数据解析库

Anderson-Lu · 2018-08-09 12:49:16 · 1710 次点击 · 预计阅读时间 2 分钟 · 大约8小时之前 开始浏览    
这是一个创建于 2018-08-09 12:49:16 的文章,其中的信息可能已经有所发展或是发生改变。

Gofasion是一个方便开发过程中接口JSON数据解析的轻量级解析库,其最大的特点在于支持链式调用,也就是说不必预先定义好数据的结构就可以直接获取到目标键名和键值。

开源

https://github.com/Anderson-Lu/gofasion

安装

go get github.com/Anderson-Lu/fasion/gofasion

快速开始

package main

import (
    "github.com/Anderson-Lu/fasion/gofasion"
    "fmt"
)

//规则数据
var testJson = `
    {
        "name":"foo",
        "value":1,
        "second_level": {"name":2},
        "second_array":[1,2,3,4,5,6,7],
        "bool": true,
        "value64":1234567890
    }
`

//不规则数据
var testJson2 = `
  [
      1,2,"helloword",{"name":"demo"}
  ]  
`

func main() {
    fsion := gofasion.NewFasion(testJson)

    //输出 "foo"
    fmt.Println(fsion.Get("name").ValueStr())

    //输出 1
    fmt.Println(fsion.Get("value").ValueInt())

    //输出 {\"name\":\"foo\",\"value\":1...}
    fmt.Println(fsion.Json())

    i32 := fsion.Get("value").ValueInt32()
    fmt.Println(i32)

    i64 := fsion.Get("value64").ValueInt64()
    fmt.Println(i64)

    second_fson := fsion.Get("second_level")
    fmt.Println(second_fson.Get("name").ValueStr())

    // 数组数据的遍历
    second_array := fsion.Get("second_array").Array()
    for _, v := range second_array {
        fmt.Println(v.ValueInt())
    }

    boolVal := fsion.Get("bool").ValueStr()
    fmt.Println(boolVal)

    //不规则数据的解析
    fsion2 := gofasion.NewFasion(testJson2)
    elems := fsion2.Array()
    fmt.Println(elems[0].ValueInt())
    fmt.Println(elems[1].ValueInt())
    fmt.Println(elems[2].ValueStr())

    fmt.Println(elems[3].Json())

    //传统结构体解析
    var iter struct {
        Name  string `json:"name"`
        Value int    `json:"value"`
    }
    fsion.Value(&iter)
    fmt.Println(iter.Name)
    fmt.Println(iter.Value)
}

版本

v1 基础版本,提供常用的基本功能

贡献

欢迎大家提出宝贵issue,也可以提交合并请求,希望能做一款让所有golang开发者收益的开源库。

许可

MIT Licence


有疑问加站长微信联系(非本文作者))

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

1710 次点击  ∙  1 赞  
加入收藏 微博
被以下专栏收入,发现更多相似内容
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传