我不能使用golang来解析带有服务器响应的json:
1 2 3 4 | { "id": 1, "description":"{"uDes":"","reDes":[{"des":"aaa,,request=<?xml version="1.0" encoding="GBK"?><Req ver="3.0"><HR version="3.0" cd="0"><src><\\\\/src><license><\\\\/license><clientid>com.sample.xo<\\\\/clientid><ii>8603<\\\\/ii><im>46002910<\\\\/im><uuid>da032b2<\\\\/uuid><reqid>-21851<\\\\/reqid><smc>44:91<\\\\/smc><sdv>2.0.201501131131.a.r<\\\\/sdv><corv>V1.1.0r<\\\\/corv><\\\\/HDR><DRR nettype="LTE" inftype="1"><mc>460<\\\\/cc><mnc>00<\\\\/mnc><lac>34809<\\\\/lac><cellid>8842241<\\\\/cellid><signal>-69<\\\\/signal><\\\\/DRR><\\\\/Cell_Req>&retype=3×tamp=1469550331136"}]}" } |
请注意,键" description"具有很多非法字符。我只想将其作为字符串存储在我们的数据库中。
go代码片段如下:
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 | import ( "fmt" "net/http" "encoding/json" ) var p := fmt.Println type DataSlice struct{ Id int Destription string } func main() { p("Start fetching data..") resp,err := http.Get("http://127.0.0.1/pis") if err != nil{ //handle error p(err) }else{ defer resp.Body.Close() var jsonInst DataSlice p("Start decode json body..") err := json.NewDecoder(resp.Body).Decode(&jsonInst) if err != nil { panic(err) }else{ //do insert here } } } |
此代码执行正常,但描述值为空。请帮助我解决此问题。 非常感谢!
-
您有一个错字
Destription != Description 。 - 谢谢你吉姆..我还没有检查这个映射键。 :)
请注意,您在
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 | package main import ( "encoding/json" "fmt" "strings" ) var input = `{ "id": 1, "description":"{"uDes":"","reDes":[{"des":"aaa,,request=<?xml version="1.0" encoding="GBK"?><Req ver="3.0"><HR version="3.0" cd="0"><src><\\\\/src><license><\\\\/license><clientid>com.sample.xo<\\\\/clientid><ii>8603<\\\\/ii><im>46002910<\\\\/im><uuid>da032b2<\\\\/uuid><reqid>-21851<\\\\/reqid><smc>44:91<\\\\/smc><sdv>2.0.201501131131.a.r<\\\\/sdv><corv>V1.1.0r<\\\\/corv><\\\\/HDR><DRR nettype="LTE" inftype="1"><mc>460<\\\\/cc><mnc>00<\\\\/mnc><lac>34809<\\\\/lac><cellid>8842241<\\\\/cellid><signal>-69<\\\\/signal><\\\\/DRR><\\\\/Cell_Req>&retype=3×tamp=1469550331136"}]}" }` var p = fmt.Println type DataSlice struct { Id int Description string } func main() { var inst DataSlice p("Start decode json body..") err := json.NewDecoder(strings.NewReader(input)).Decode(&inst) if err != nil { panic(err) } fmt.Printf("%#v ", inst) } |
输出:
1 2 3 | Start decode json body.. main.DataSlice{Id:1, Description:"{"uDes":"","reDes":[{"des":"aaa,,request=<?xml version="1.0" encoding="GBK"?><Req ver="3.0"><HR version="3.0" cd="0"><src><\\\\/src><license><\\\\/license><clientid>com.sample.xo<\\\\/clientid><ii>8603<\\\\/ii><im>46002910<\\\\/im><uuid>da032b2<\\\\/uuid><reqid>-21851<\\\\/reqid><smc>44:91<\\\\/smc><sdv>2.0.201501131131.a.r<\\\\/sdv><corv>V1.1.0r<\\\\/corv><\\\\/HDR><DRR nettype="LTE" inftype="1"><mc>460<\\\\/cc><mnc>00<\\\\/mnc><lac>34809<\\\\/lac><cellid>8842241<\\\\/cellid><signal>-69<\\\\/signal><\\\\/DRR><\\\\/Cell_Req>&retype=3×tamp=1469550331136"}]}"} |