1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86
| package main
import ( "encoding/json" "fmt" "io/ioutil" "os"
"github.com/tidwall/gjson" )
func strGjson() { jsonstr := `{"code": 1, "msg":"success", "data":[{"id": 1, "name":"西瓜"},{"id": 2, "name": "苹果"}]}` results := gjson.GetMany(jsonstr, "code", "msg", "data") fmt.Println(results) data := results[2] fmt.Println(data) if data.Exists() { re := data.Array() for _, v := range re { fmt.Println(v) fmt.Println(v.Get("name")) } }
}
func readByteJson() { f, err := os.Open("hello_work\\data.json") if err != nil { fmt.Println("open file eror:", err) return } defer f.Close() formData := make(map[string]interface{}) json.NewDecoder(f).Decode(&formData) for key, value := range formData { fmt.Println("key:", key, " => value :", value) if _, ok := value.([]interface{}); ok { for k, v := range value.([]interface{}) { fmt.Println("key:", k, " => value :", v) for j, s := range v.(map[string]interface{}) { fmt.Printf("%s: %v\n", j, s)
} } } }
} func byteGjson() { f, err := os.Open("hello_work\\data.json") if err != nil { fmt.Println("open file eror:", err) return } defer f.Close() byteValue, _ := ioutil.ReadAll(f) data := gjson.GetBytes(byteValue, "data") code := gjson.GetBytes(byteValue, "code") fmt.Println(data) fmt.Println(code) if data.Exists() { re := data.Array() for _, v := range re { fmt.Println(v) fmt.Println(v.Get("name")) } }
}
func main() { strGjson() }
|