2016-08-04 45 views
-2

的項目:golang無法解析我不能用golang解析此JSON與服務器響應JSON

{ 
"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&timestamp=1469550331136\"}]}" 
} 

請注意鍵「描述」有很多非法character.I的只是想獲取並將其作爲字符串存儲到我們的數據庫中。 以下旅途中的代碼片段:

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 
     } 
    } 
} 

這段代碼執行罰款,但描述值empty.please幫我解決這個問題。非常感謝!

+1

你有一個錯字'Destription = Description'。 – JimB

+0

謝謝你Jim..I沒有檢查這個映射關鍵字。 :) –

回答

1

請注意,您在DataSlice結構中有錯字 - Destription而不是Description。見操場上,成功地分析你的JSON的blob下面的例子 - https://play.golang.org/p/CeoCH2SJXh

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&timestamp=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\n", inst) 
} 

輸出:

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&timestamp=1469550331136\"}]}"}