1).返回字段数等于struct数,见代码:
package mainimport ("encoding/json""fmt""strings")type GetResponse struct {Message string `json:message`Success int `json:success`Vild string `json:vild`Core string `json:core`}func main() {sss := `callback_1491381399454({"message": "success", "success": 1, "vild": "bc48a84c5b0175efb6a59b2036f76cd8", "core": "3"})`k := strings.Index(sss, "{") // 找第一个‘{’的位置l := strings.Index(sss, ")") // 找第一个‘)’的位置if k == -1 || l == -1 { // 是否查找成功return}sbss := sss[k:l]fmt.Printf("sss = ")fmt.Println(sss)fmt.Printf("sbss = ")fmt.Println(sbss)var geres GetResponseerr := json.Unmarshal([]byte(sbss), &geres)if err != nil {fmt.Println(err.Error())return}fmt.Printf("geres = ")fmt.Println(geres)fmt.Printf("geres.Vild = %s", geres.Vild)}
2).返回字段数小于定义struct数, 代码如下:
package mainimport ("encoding/json""fmt""strings")type GetResponse struct {Message string `json:message`Success int `json:success`Vild string `json:vild`}func main() {sss := `callback_1491381399454({"message": "success", "success": 1, "vild": "bc48a84c5b0175efb6a59b2036f76cd8", "core": "3"})`k := strings.Index(sss, "{") // 找第一个‘{’的位置l := strings.Index(sss, ")") // 找第一个‘)’的位置if k == -1 || l == -1 { // 是否查找成功return}sbss := sss[k:l]fmt.Printf("sss = ")fmt.Println(sss)fmt.Printf("sbss = ")fmt.Println(sbss)var geres GetResponseerr := json.Unmarshal([]byte(sbss), &geres)if err != nil {fmt.Println(err.Error())return}fmt.Printf("geres = ")fmt.Println(geres)fmt.Printf("geres.Vild = %s", geres.Vild)}
说明:
当你接收的 json格式文本字段比定义的结构体字段多的时候,也可以解析成功,只是不能访问多出的字段
