<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                ### 概述 在go中,結構體想轉成json,變量名首字母必須是大寫 . #### 通過結構體生成json ~~~ type Person struct { Company string //首字母要大寫 Subjects []string IsOk bool Price float64 } func main() { s := Person{"ali", []string{"PHP", "JAVA", "GO"}, true, 1000} buf, err := json.Marshal(s) //json.MarshalIndent(s,""," ")可以格式化打印 if err != nil { fmt.Println(err) return } fmt.Println(string(buf)) } ~~~ ~~~ {"Company":"ali","Subjects":["PHP","JAVA","GO"],"IsOk":true,"Price":1000} ~~~ ### struct_tag使用 ~~~ type Person struct { Company string `json:"company"` //二次編碼 Subjects []string `json:"-"` //-代表此字段不會輸出到屏幕 IsOk bool `json:",string"` //把bool轉換成字符串 Price float64 } func main() { s := Person{"ali", []string{"PHP", "JAVA", "GO"}, true, 1000} buf, err := json.Marshal(s) if err != nil { fmt.Println(err) return } fmt.Println(string(buf)) } ~~~ ~~~ {"company":"ali","IsOk":"true","Price":1000} ~~~ ### 通過map生成json ~~~ m := make(map[string]interface{}, 4) m["company"] = "facebook" m["subjects"] = []string{"PHP", "JAVA", "GO"} m["isok"] = true m["price"] = 100 res, err := json.MarshalIndent(m, "", " ") //第三個參數是tab if err != nil { fmt.Println(err) return } fmt.Println(string(res)) ~~~ ~~~ { "company": "facebook", "isok": true, "price": 100, "subjects": [ "PHP", "JAVA", "GO" ] } ~~~ ### json解析到結構體 ~~~ type Person struct { Company string Subjects []string IsOk bool Price float64 } type Person1 struct { Company string Subjects []string } func main() { jsonBuf := `{ "company": "facebook", "isok": true, "price": 100, "subjects": [ "PHP", "JAVA", "GO" ] }` var p Person err := json.Unmarshal([]byte(jsonBuf), &p) //這里必須是取地址 if err != nil { fmt.Println(err) return } fmt.Println(p) fmt.Printf("%+v\n", p) var p1 Person1 err = json.Unmarshal([]byte(jsonBuf), &p1) //這里必須是取地址 if err != nil { fmt.Println(err) return } fmt.Println(p1) fmt.Printf("%+v\n", p1) } ~~~ ~~~ {facebook [PHP JAVA GO] true 100} {Company:facebook Subjects:[PHP JAVA GO] IsOk:true Price:100} {facebook [PHP JAVA GO]} {Company:facebook Subjects:[PHP JAVA GO]} ~~~ ### json解析到map 相比于結構體,map要復雜一點,因為要通過類型斷言來反推類型. ~~~ func main() { jsonBuf := `{ "company": "facebook", "isok": true, "price": 100, "subjects": [ "PHP", "JAVA", "GO" ] }` m := make(map[string]interface{}, 4) err := json.Unmarshal([]byte(jsonBuf), &m) if err != nil { fmt.Println(err) return } //fmt.Printf("%+v", m) var str string //str = m["company"] //無法直接賦值,哪怕用string()也不行 //fmt.Println(str) for key, value := range m { switch data := value.(type) { case string: str = data fmt.Printf("字符串類型,key = %s,value = %s\n", key, str) case bool: fmt.Printf("布爾類型,key = %s,value = %v\n", key, data) case float64: fmt.Printf("布爾類型,key = %s,value = %v\n", key, data) case []interface{}: //這個要注意 fmt.Printf("切片類型,key = %s,value = %v\n", key, data) } } } ~~~ ~~~ 布爾類型,key = isok,value = true 布爾類型,key = price,value = 100 切片類型,key = subjects,value = [PHP JAVA GO] 字符串類型,key = company,value = facebook ~~~ ### 自定義struct轉json 實現以下兩個接口即可 ~~~ type Marshaler interface { MarshalJSON() ([]byte, error) } type Unmarshaler interface { UnmarshalJSON([]byte) error } ~~~
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看