美文网首页
golang的json解析汇总

golang的json解析汇总

作者: heliping_peter | 来源:发表于2021-11-09 15:13 被阅读0次

解析一个比较异常的json,json中的key包含变量

{
    "protocols": {
        "80-0": {
            "columns": [[[{
                            "name": "switch_1",
                            "desc": "开关量1",
                            "mode": "SLOT",
                            "type": "INT",
                            "block": "0",
                            "slot": "2",
                            "offset": "7",
                            "start": "7",
                            "stride": "2"
                        }, {
                            "name": "switch_2",
                            "desc": "开关量2",
                            "mode": "SLOT",
                            "type": "INT",
                            "block": "0",
                            "slot": "3",
                            "offset": "9",
                            "start": "9",
                            "stride": "2"
                        },
                    ]]],
          
        },
        "80-1":{
            "columns": [[[{
                            "name": "switch_1",
                            "desc": "开关量1",
                            "mode": "SLOT",
                            "type": "INT",
                            "block": "0",
                            "slot": "2",
                            "offset": "10",
                            "start": "10",
                            "stride": "2"
                        }, {
                            "name": "switch_2",
                            "desc": "开关量2",
                            "mode": "SLOT",
                            "type": "INT",
                            "block": "0",
                            "slot": "3",
                            "offset": "12",
                            "start": "12",
                            "stride": "2"
                        }, 

解析如下,主要为需要将包含变量的key,解析为一个map[string]...

var ostype = runtime.GOOS

type Protocolstmp struct {
    Protocols  map[string]Columns  `json:protocols`
}

type Columns struct {
    Columns    [][][]CDColumn   `json:cloumns`
}

type CDColumn  struct {
    Name      string       `json:name`  
    desc      string        `json:desc`  
    Mode      string        `json:columns`  
    Type      string          `json:type`  
    Block      string         `json:columns`  
    Slot      string           `json:slot`  
    Offset   string          `json:offset`  
    Start    string         `json:start`  
    Stride   string         `json:stride`  
}

func GetProtocol (id string, columnkey string) (CDColumn, error) {
    localpath, _ := os.Getwd()
    var filename string
    if ostype == "windows" {
        filename = filepath.Join(localpath, "config\\genProtocol.json")
    } else {
        filename = filepath.Join(localpath, "config/genProtocol.json")
    }   
    fmt.Println(filename)
    data, err := ioutil.ReadFile(filename)
    if err != nil {
        fmt.Println(err)
    }   
    tmp1 := Protocolstmp{}  
    json.Unmarshal(data, &tmp1) 
    for _, pp := range tmp1.Protocols[id].Columns[0] {  
    //fmt.Printf("查询到协议:%+v\n", pp)
    for _, i := range pp {
        if i.Name == columnkey {
            fmt.Printf("查询到上报字段的信息:%+v\n", i)
            return i, nil
        }
    }
}
    return CDColumn{}, errors.New("Not found")
}

相关文章

  • golang的json解析汇总

    解析一个比较异常的json,json中的key包含变量 解析如下,主要为需要将包含变量的key,解析为一个map[...

  • golang解析json数据

    golang官方包encoding/json包解析json数据太复杂,这里使用简单的json解析包simplejs...

  • golang处理多层json

    接口返回的json文件 使用golang解析data内部的数据

  • 解析json

    golang 编码 json 还比较简单,而解析 json 则非常蛋疼。不像 PHP 一句 json_decode...

  • golang向interface{}解析json时把所有的数字都

    最近发现 golang解析json时把所有的int,float,double等数字,向interface{}解析时...

  • golang中的json解析

    json 解码 首先我们构建一个常用的接口返回的json数据格式 main.go Golang解析json时候,多...

  • Golang处理JSON(二)--- 解码

    golang编码json还比较简单,而解析json则非常蛋疼。不像Python一句json.loads就能搞定。之...

  • go json解析Marshal和Unmarshal

    go json解析Marshal和Unmarshal - Go语言中文网 - Golang中文社区

  • golang json解析

    Encode 将一个对象编码成JSON数据,接受一个interface{}对象,返回[]byte和error: f...

  • Golang json 解析

    需要解析json格式如下: 说一说三种解析方式,1.利用结构体struct解析;2.利用interface空接口解...

网友评论

      本文标题:golang的json解析汇总

      本文链接:https://www.haomeiwen.com/subject/wrnmzltx.html