2016-08-04 2 views
-2

Я не могу использовать golang разобрать этот JSON с ответом сервера:golang не может разобрать элемент 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

Спасибо u Jim .. Я не проверял этот ключ сопоставления. :) –

ответ

1

Обратите внимание, что у вас есть опечатка - Destription вместо Description в вашей структуре DataSlice. Смотрите следующий пример ДЕТСКАЯ ПЛОЩАДКА, успешно разбирает свой JSON блоб - 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\"}]}"} 
Смежные вопросы