Golang中国

golang 这种深度嵌套的JSON怎么解析。
尤其是dataValue 带转义符的。 前面都解析出来了
就是dataValue无法解析。
cannot unmarshal string into Go value of type DataValue

{
    "outputs": [
        {
            "outputLabel": "ocr_id",
            "outputMulti": {},
            "outputValue": {
                "dataType": 50,
                "dataValue": "{\"address\":\"address\",\"birth\":\"19810602\",\"config_str\":\"{\\\"side\\\":\\\"face\\\"}\",\"name\":\"张三\",\"nationality\":\"汉\",\"num\":\"650105198106031234\",\"request_id\":\"201612051913\",\"sex\":\"男\",\"success\":true}\n"
            }
        }
    ]
}
4 回复
gzw13999
#1 gzw13999 • 2016-12-06 18:23

dataValue 整体当字符串解析没问题。难道dataValue需要二次解析??

heimeil
#2 heimeil • 2016-12-07 09:45

dataValue需要二次解析,用了转义符,在这段JSON里是一个string值,不是JSON Object。

ha666
#3 ha666 • 2016-12-07 23:51

其实像这种问题,主要是写出struct,有一个非常简单的方法:
http://json2struct.mervine.net/
然后,就直接可以反序列化了

ghostwwl
#4 ghostwwl • 2016-12-12 12:50

貌似我当时解析支付宝的扫码支付是这么来的

这里的data是支付宝蚂蚁金服返回的 byets 本身是个json 然后 里面真正的结果在response_flag对像里

jsonresult, err := simplejson.NewJson(data)
if nil != err {
panic(err)
}
map_result,
:= json_result.Map()
real_result, OK := map_result[response_flag]
if OK {
return (real_result).(map[string]interface{})
}

需要 登录 后方可回复, 如果你还没有账号你可以 注册 一个帐号。