Go 解析json

个人学习笔记

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)
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值