Golang中国
  buf := bytes.NewBuffer([]byte(`{
        "test": {
            "array": [1, "2", 3],
            "arraywithsubs": [
                {"subkeyone": 1},
                {"subkeytwo": 2, "subkeythree": 3}
            ],
            "bignum": 9223372036854775807,
            "uint64": 18446744073709551615
        }
    }`))

应该很简单的,只是我刚接触,实在搞不懂
大概这种很简单:
shuju=buy.test.arraywithsubs
然后怎么循环输出shuju的每个字段
千万不要弄结构体实在是受不了写那么多东西

怎么解析,然后循环输出arraywithsubs的subkeyone里面的字段!我有个api类似的结构需要把arraywithsubs导出,可是官方例子正好这部分没有
实在搞不定,用的go-simplejson


shijunti19 于 2017-02-27 16:27 修改
9 回复
joe9i0
#1 joe9i0 • 2017-02-27 15:08

json标准不支持注释, 你还是别挣扎了, 难受自己.

shijunti19
#2 shijunti19 • 2017-02-27 16:22

谁教下,和注释无关,我改了

cxflag203
#3 cxflag203 • 2017-02-27 17:56

用这个 github.com/tidwall/gjson

fisherFIAF
#4 fisherFIAF • 2017-02-28 10:09
package main

import (
    "encoding/json"
    "fmt"
    "log"
)

func main() {
    buf := []byte(`{
        "test": {
            "array": [1, 2, 3],
            "arraywithsubs": [
                {"subkeyone": 1},                                                                                                                                                                                                                                               
                {"subkeytwo": 2},
                {"subkeythree": 3}
            ],
            "bignum": 9223372036854775807,
            "uint64": 18446744073709
        }
    }`)

    type T struct {
        Test struct {
            Array         []int            `json:"array"`
            ArrayWithSubs []map[string]int `json:"arraywithsubs"`
            BigNum        int64            `json:"bignum"`
            Uint64        int64            `json:"uint64"`
        } `json:"test"`
    }

    var t T
    if err := json.Unmarshal(buf, &t); err != nil {
        log.Fatal("parse error:", err)
    } else {
        fmt.Printf("%+v\n", t)
    }
}

输出

{Test:{Array:[1 2 3] ArrayWithSubs:[map[subkeyone:1] map[subkeytwo:2] map[subkeythree:3]] BigNum:9223372036854775807 Uint64:18446744073709}}

fisherFIAF
#5 fisherFIAF • 2017-02-28 10:10

还有,你的Json格式就不对,不知道谁教你那么写的,误人子弟,缺乏程序员的基本素养

ZhangTingkuo
#6 ZhangTingkuo • 2017-03-08 18:37

你这Json格式明显不对啊

wei_193
#7 wei_193 • 2017-03-10 23:23

这json数据我服

xpoony
#8 xpoony • 2017-03-15 10:40
package main

import (
    "encoding/json"
    "fmt"
)

type ConfigFile struct {
    Name string
    Sex  bool
    Age  int
}

func JsonReader(c interface{}, content string) error {
    return
}
func main() {
    var str = "{\"Name\":\"tom\",\r\n\"Sex\":true,\r\n\"Age\":22\r\n}"
    var c = &ConfigFile{}
    err := json.Unmarshal([]byte(str), c)
    if err != nil {
        fmt.Println(err)
    }
    fmt.Println(c)
}
dragonliu
#9 dragonliu • 2017-03-15 12:35

json格式不对,醉了

需要 登录 后方可回复, 如果你还没有账号你可以 注册 一个帐号。