• Golang: 解析JSON数据之一


    // 读取JSON文件 将内容转为结构对象 然后更改数据
    
    package main
    
    import (
        "encoding/json"
        "fmt"
    )
    
    type (
        person struct {
            Name string `json:"name"`
            Age  int    `json:"age"`
        }
    
        result struct {
            Group   string   `json:"group"`
            Persons []person `json:"persons"`
        }
    )
    
    var jsondata = `{
      "group": "programmer",
      "persons": [
        {
          "name": "Jack",
          "age": 25
        },
        {
          "name": "Lily",
          "age": 20
        }
      ]
    }`
    
    func main() {
        var data result
    
        // 读取JSON文件内容 返回字节切片
        bytes := []byte(jsondata)
    
        fmt.Println("*** data.json content: ***")
    
        // 打印时需要转为字符串
        fmt.Println(string(bytes))
    
        // 将字节切片映射到指定结构上
        json.Unmarshal(bytes, &data)
    
        fmt.Println("*** unmarshal result: ***")
    
        // 打印对象结构
        fmt.Println(data)
    
        // 更改数据
        data.Group = "engineer"
        data.Persons[0].Age = -100
    
        // 将更改后的结构对象序列化成JSON格式
        newBytes, _ := json.Marshal(&data)
    
        fmt.Println("*** update content: ***")
    
        // 打印JSON结果
        fmt.Println(string(newBytes))
    }

    参考:https://www.cnblogs.com/liuhe688/p/10971327.html

    用以下网址返回的json写个实例:

       http://quotes.money.163.com/hs/service/diyrank.php?host=http%3A%2F%2Fquotes.money.163.com%2Fhs%2Fservice%2Fdiyrank.php&page=0&query=STYPE%3AEQA&fields=SYMBOL%2CNAME%2CPRICE&sort=SYMBOL&order=asc&count=8&type=query

    // 读取JSON文件 将内容转为结构对象 然后更改数据
    
    package main
    
    import (
        "encoding/json"
        "fmt"
        "io/ioutil"
        "net/http"
    )
    
    type (
        ListOne struct {
            NAME   string  `json:"NAME"`
            SYMBOL string  `json:"SYMBOL"`
            PRICE  float64 `json:"PRICE"`
        }
    
        result struct {
            Page  int       `json:"page"`
            Order string    `json:"order"`
            Time  string    `json:"time"`
            List  []ListOne `json:"list"`
        }
    )
    
    func main() {
        var data result
    
        url := "http://quotes.money.163.com/hs/service/diyrank.php?host=http%3A%2F%2Fquotes.money.163.com%2Fhs%2Fservice%2Fdiyrank.php&page=0&query=STYPE%3AEQA&fields=SYMBOL%2CNAME%2CPRICE&sort=SYMBOL&order=asc&count=8&type=query"
        req, _ := http.NewRequest("GET", url, nil)
        // 设置header
        req.Header.Set("User-Agent", "Mozilla/5.0 (Windows NT 6.1;WOW64) AppleWebKit/537.36 (KHTML,like GeCKO) Chrome/45.0.2454.85 Safari/537.36 115Broswer/6.0.3")
        req.Header.Set("Referer", "https://movie.douban.com/")
        req.Header.Set("Connection", "keep-alive")
        resp, err := (&http.Client{}).Do(req)
        if err != nil {
            panic(err)
        }
        // 读取JSON文件内容 返回字节切片
        bytes, _ := ioutil.ReadAll(resp.Body)
    
        // 将字节切片映射到指定结构上
        json.Unmarshal(bytes, &data)
    
        // 打印对象结构
        fmt.Println(data)
    
    }
  • 相关阅读:
    算法题:N皇后-2
    算法题:串联所有单词的子串
    算法题:二叉树的垂序遍历
    算法题:只出现一次的数字 三
    算法题:等价多米诺骨牌对的数量
    算法:判定字符是否唯一
    算法题:字符串相乘
    算法题:字符串的排列
    算法题:单词规律
    算法题:连通网络的操作次数
  • 原文地址:https://www.cnblogs.com/pu369/p/13086808.html
Copyright © 2020-2023  润新知