个人学习笔记
package main
import (
"encoding/json"
"fmt"
)
func main() {
// 定义一个字符串变量,存储 JSON 数据
jsonStr := `{"data":{"market":{"status_id":7,"region":"CN","status":"已收盘","time_zone":"Asia/Shanghai","time_zone_desc":null,"delay_tag":0},"quote":{"symbol":"SH510310","code":"510310","acc_unit_nav":1.869,"high52w":4.487,"nav_date":1736697600000,"avg_price":3.732,"delayed":0,"type":13,"expiration_date":null,"percent":2.57,"tick_size":0.001,"float_shares":null,"limit_down":3.293,"amplitude":2.87,"current":3.753,"high":3.763,"current_year_percent":-2.85,"float_market_capital":null,"issue_date":1364140800000,"low":3.658,"sub_type":"EBS","market_capital":2.41656585732E11,"currency":"CNY","lot_size":100,"lock_set":null,"iopv":3.7543,"timestamp":1736838000000,"found_date":1362499200000,"amount":1.968248306E9,"chg":0.094,"last_close":3.659,"volume":527389042,"volume_ratio":2.01,"limit_up":4.025,"turnover_rate":null,"low52w":1.278,"name":"沪深300ETF易方达","premium_rate":-0.03,"exchange":"SH","unit_nav":3.659,"time":1736838000000,"total_shares":64390244000,"open":3.66,"status":1},"others":{"pankou_ratio":30.14,"cyb_switch":true},"tags":[{"description":"融","value":6},{"description":"空","value":7}]},"error_code":0,"error_description":""}`
// 定义一个结构体,用于存储解析后的 JSON 数据
var data map[string]interface{}
// 使用 json.Unmarshal 解析 JSON 数据
err := json.Unmarshal([]byte(jsonStr), &data)
if err != nil {
fmt.Println("Error parsing JSON:", err)
return
}
// 提取 data 字段的值
dataValue, ok := data["data"].(map[string]interface{})
if !ok {
fmt.Println("Error: data field not found or not a map")
return
}
// 打印提取出的 data 字段的值
fmt.Println("Data:", dataValue)
marketStatus, ok := dataValue["market"].(map[string]interface{})["status"].(string)
if !ok {
fmt.Println("Error: status field not found or not a string")
return
}
// 打印提取出的 data.market.status 字段的值
fmt.Println("Market Status:", marketStatus)
marketStatus1, ok := data["data"].(map[string]interface{})["market"].(map[string]interface{})["status"].(string)
if !ok {
fmt.Println("Error: status field not found or not a string")
return
}
// 打印提取出的 data.market.status 字段的值
fmt.Println("Market Status:", marketStatus1)
}