亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何解析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 關注
  • 246 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號