为了账号安全,请及时绑定邮箱和手机立即绑定

如何解析json数组结构

如何解析json数组结构

Go
收到一只叮咚 2023-05-15 10:12:49
我使用以下代码没有成功解析 json 值,但它的内部数组 []https://play.golang.org/p/5HdWeyEtviepackage mainimport (    "encoding/json"    "fmt")var input = `[{    "created_at": "Thu May 31 00:00:01 +0000 2012"},{    "created_at": "Thu May 31 00:00:01 +0000 2012"}]`func main() {    var val map[string]interface{}    if err := json.Unmarshal([]byte(input), &val); err != nil {        panic(err)    }    fmt.Println(val)}这个想法是获取值作为键并打印它,就像获取字符串参数 =“created_at” 并打印它的函数一样。
查看完整描述

4 回答

?
杨__羊羊

TA贡献1943条经验 获得超7个赞

您的输入是:


[  

   {  

      "created_at":"Thu May 31 00:00:01 +0000 2012"

   },

   {  

      "created_at":"Thu May 31 00:00:01 +0000 2012"

   }

]

你可以把它变成这样的结构:


type MyArray []struct {

    CreatedAt string `json:"created_at"`

}

现在您可以读取 JSON 数据并循环遍历它以获得所需的值。这是你得到的:


package main


import (

    "encoding/json"

    "fmt"

)


var str = `[

    {

    "created_at": "Thu May 31 00:00:01 +0000 2012"

    },

    {

    "created_at": "Thu May 31 00:00:01 +0000 2013"

    }

]`


type MyArray struct {

    CreatedAt string `json:"created_at"`

}


func main() {

    var m []MyArray

    if err := json.Unmarshal([]byte(str), &m); err != nil {

        panic(err)

    }

    for _, val := range m {

        fmt.Println(val.CreatedAt)

    }

}

查看完整回答
反对 回复 2023-05-15
?
青春有我

TA贡献1784条经验 获得超8个赞

您正在将数组解组到地图。这显然行不通。你需要val是一个数组。


func main() {

    var val []map[string]interface{} // <---- This must be an array to match input

    if err := json.Unmarshal([]byte(input), &val); err != nil {

        panic(err)

    }

    fmt.Println(val)

}


查看完整回答
反对 回复 2023-05-15
?
宝慕林4294392

TA贡献2021条经验 获得超8个赞

var input = `[

    {

    "created_at": "Thu May 31 00:00:01 +0000 2012"

    },

    {

    "created_at": "Thu May 31 00:00:01 +0000 2013"

    }

]`


func main() {

    var val []struct {

        CreatedAt string `json:"created_at"`

    }


    if err := json.Unmarshal([]byte(input), &val); err != nil {

        panic(err)

    }


    fmt.Println(val[0].CreatedAt)

}


查看完整回答
反对 回复 2023-05-15
?
慕少森

TA贡献2019条经验 获得超9个赞

你应该像这样创建一个结构。


type Data struct {

    CreateAt time.Time `json:"create_at"`

}


func main() {

    var in []Data

    if err := json.Unmarshal([]byte(input), &in); err != nil{

        log.Fatal(err)

    }

    for _, data := range in{

        fmt.Println(data.CreateAt)

    }

}


查看完整回答
反对 回复 2023-05-15
  • 4 回答
  • 0 关注
  • 180 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信