zoukankan      html  css  js  c++  java
  • 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)
    
    }
  • 相关阅读:
    vue路由篇(动态路由、路由嵌套)----动态路由下再嵌套子路由
    文件、I/O重定向、文本
    Linux基础命令
    Chrome开发者工具(DevTools)使用技巧
    Grid网格布局知识点整理
    Javascript常见数组、字符串API整理
    css 实现瀑布流布局效果
    实时校验输入框内容
    app里遇见的小问题总结
    修复bug: iOS特性会滚动会引起白屏 ,使用 will-change: transform;
  • 原文地址:https://www.cnblogs.com/pu369/p/13086808.html
Copyright © 2011-2022 走看看