简体   繁体   English

golang json数组解组为struct类型

[英]golang json array unmarshal into type struct

What is causing this to not break apart json? 是什么导致这不分解json? Anyone have an idea on how type is wrong? 任何人都有关于类型错误的想法吗?

With error of: 错误为:

{"Rates":[{"Symbol":"EURAUD","Bid":"1.45492","Ask":"1.45608","Spread":"11.60","ProductType":"1",},{"Symbol":"Copper","Bid":"2.6068","Ask":"2.6088","Spread":"2.00","ProductType":"3",},{"Symbol":"AUDNZD","Bid":"1.08999","Ask":"1.09177","Spread":"17.80","ProductType":"1",},{"Symbol":"EURSEK","Bid":"9.63786","Ask":"9.65569","Spread":"178.30","ProductType":"1",},{"Symbol":"CADJPY","Bid":"81.629","Ask":"81.708","Spread":"7.90","ProductType":"1",},{"Symbol":"USDCHF","Bid":"0.99463","Ask":"0.99527","Spread":"6.40","ProductType":"1",},{"Symbol":"USDCNH","Bid":"6.8973","Ask":"6.8993","Spread":"20.00","ProductType":"1",},{"Symbol":"US30","Bid":"20950.00","Ask":"20952.00","Spread":"2.00","ProductType":"2",},{"Symbol":"XAGUSD","Bid":"17.202","Ask":"17.25","Spread":"4.80","ProductType":"5",},{"Symbol":"USDSEK","Bid":"8.84794","Ask":"8.85542","Spread":"74.80","ProductType":"1",},{"Symbol":"AUDCHF","Bid":"0.74417","Ask":"0.74588","Spread":"17.10","ProductType":"1",},{"Symbol":"GER30","Bid":"12431.05", {“ Rates”:[{“ Symbol”:“ EURAUD”,“ Bid”:“ 1.45492”,“ Ask”:“ 1.45608”,“ Spread”:“ 11.60”,“ ProductType”:“ 1”,},{ “ Symbol”:“ Copper”,“ Bid”:“ 2.6068”,“ Ask”:“ 2.6088”,“ Spread”:“ 2.00”,“ ProductType”:“ 3”,},{“ Symbol”:“ AUDNZD” ,“出价”:“ 1.08999”,“询问”:“ 1.09177”,“点差”:“ 17.80”,“产品类型”:“ 1”,},{“符号”:“ EURSEK”,“出价”:“ 9.63786 “,” Ask“:” 9.65569“,” Spread“:” 178.30“,” ProductType“:” 1“,},{” Symbol“:” CADJPY“,” Bid“:” 81.629“,” Ask“:” 81.708“,” Spread“:” 7.90“,” ProductType“:” 1“,},{” Symbol“:” USDCHF“,” Bid“:” 0.99463“,” Ask“:” 0.99527“,” Spread“: “ 6.40”,“ ProductType”:“ 1”,},{“ Symbol”:“ USDCNH”,“ Bid”:“ 6.8973”,“ Ask”:“ 6.8993”,“ Spread”:“ 20.00”,“ ProductType” :“ 1”,},{“ Symbol”:“ US30”,“ Bid”:“ 20950.00”,“ Ask”:“ 20952.00”,“ Spread”:“ 2.00”,“ ProductType”:“ 2”,}, {“ Symbol”:“ XAGUSD”,“ Bid”:“ 17.202”,“ Ask”:“ 17.25”,“ Spread”:“ 4.80”,“ ProductType”:“ 5”,},{“ Symbol”:“ USDSEK “,”出价“:” 8.84794“,”询问“:” 8.85542“,”点差“:” 74.80“,”产品类型“:” 1“,},{”符号“:” AUDCHF“,”出价“:” 0.74417“,”询问“:” 0.74588“,”点差“:” 17.10“,”产品类型“:” 1“,},{”符号“:” GER30“,”出价“:” 12431.05“, "Ask":"12433.45","Spread":"2.40","ProductType":"2",},{"Symbol":"USOil","Bid":"49.16","Ask":"49.21","Spread":"5.00","ProductType":"3",},{"Symbol":"GBPNZD","Bid":"1.88546","Ask":"1.88762","Spread":"21.60","ProductType":"1",},{"Symbol":"EURCAD","Bid":"1.48748","Ask":"1.48893","Spread":"14.50","ProductType":"1",},{"Symbol":"EURUSD","Bid":"1.08977","Ask":"1.08997","Spread":"2.00","ProductType":"1",},{"Symbol":"AUS200","Bid":"5922.00","Ask":"5924.00","Spread":"2.00","ProductType":"2",},{"Symbol":"EURJPY","Bid":"121.512","Ask":"121.57","Spread":"5.80","ProductType":"1",},{"Symbol":"EURGBP","Bid":"0.84132","Ask":"0.84208","Spread":"7.60","ProductType":"1",},{"Symbol":"EURNOK","Bid":"9.34136","Ask":"9.36364","Spread":"222.80","ProductType":"1",},{"Symbol":"USDCAD","Bid":"1.36524","Ask":"1.36588","Spread":"6.40","ProductType":"1",},{"Symbol":"GBPCHF","Bid":"1.28753","Ask":"1.28922","Spread":"16.90","ProductType":"1",},{"Symbol":"GBPAUD","Bid":"1.72838","Ask":"1.7303","Spread":"19.20","ProductTyp “ Ask”:“ 12433.45”,“ Spread”:“ 2.40”,“ ProductType”:“ 2”,},{“ Symbol”:“ USOil”,“ Bid”:“ 49.16”,“ Ask”:“ 49.21” ,“ Spread”:“ 5.00”,“ ProductType”:“ 3”,},{“ Symbol”:“ GBPNZD”,“ Bid”:“ 1.88546”,“ Ask”:“ 1.88762”,“ Spread”:“ 21.60 “,” ProductType“:” 1“,},{” Symbol“:” EURCAD“,” Bid“:” 1.48748“,” Ask“:” 1.48893“,” Spread“:” 14.50“,” ProductType“:” 1“,},{” Symbol“:” EURUSD“,” Bid“:” 1.08977“,” Ask“:” 1.08997“,” Spread“:” 2.00“,” ProductType“:” 1“,},{” Symbol“:” AUS200“,” Bid“:” 5922.00“,” Ask“:” 5924.00“,” Spread“:” 2.00“,” ProductType“:” 2“,},{” Symbol“:” EURJPY“, “出价”:“ 121.512”,“询问”:“ 121.57”,“点差”:“ 5.80”,“产品类型”:“ 1”,},{“符号”:“ EURGBP”,“出价”:“ 0.84132” ,“询问”:“ 0.84208”,“传播”:“ 7.60”,“产品类型”:“ 1”,},{“符号”:“ EURNOK”,“出价”:“ 9.34136”,“询问”:“ 9.36364 “,” Spread“:” 222.80“,” ProductType“:” 1“,},{” Symbol“:” USDCAD“,” Bid“:” 1.36524“,” Ask“:” 1.36588“,” Spread“:” 6.40“,” ProductType“:” 1“,},{” Symbol“:” GBPCHF“,” Bid“:” 1.28753“,” Ask“:” 1.28922“,” Spread“:” 16.90“,” ProductType“: “ 1”,},{“ Symbol”:“ GBPAUD”,“ Bid”:“ 1.72838”,“ Ask”:“ 1.7303”,“ Spread”:“ 19.20”,“ ProductTyp e":"1",},{"Symbol":"USDJPY","Bid":"111.51","Ask":"111.537","Spread":"2.70","ProductType":"1",},{"Symbol":"USDNOK","Bid":"8.57607","Ask":"8.58684","Spread":"107.70","ProductType":"1",},{"Symbol":"AUDCAD","Bid":"1.02173","Ask":"1.02347","Spread":"17.40","ProductType":"1",},{"Symbol":"FRA40","Bid":"5259.60","Ask":"5267.30","Spread":"7.70","ProductType":"2",},{"Symbol":"AUDUSD","Bid":"0.74858","Ask":"0.74899","Spread":"4.10","ProductType":"1",},{"Symbol":"USDHKD","Bid":"7.77769","Ask":"7.77956","Spread":"18.70","ProductType":"1",},{"Symbol":"NZDCHF","Bid":"0.68192","Ask":"0.68406","Spread":"21.40","ProductType":"1",},{"Symbol":"EURTRY","Bid":"3.86851","Ask":"3.87478","Spread":"62.70","ProductType":"1",},{"Symbol":"AUDJPY","Bid":"83.469","Ask":"83.543","Spread":"7.40","ProductType":"1",},{"Symbol":"USDZAR","Bid":"13.3464","Ask":"13.3941","Spread":"477.00","ProductType":"1",},{"Symbol":"Bund","Bid":"161.78","Ask":"161.81","Spread":"3.00","ProductType":"4",},{"Symbol":"USDMXN","Bid":"18.81249 e“:” 1“,},{” Symbol“:” USDJPY“,” Bid“:” 111.51“,” Ask“:” 111.537“,” Spread“:” 2.70“,” ProductType“:” 1“, },{“ Symbol”:“ USDNOK”,“ Bid”:“ 8.57607”,“ Ask”:“ 8.58684”,“ Spread”:“ 107.70”,“ ProductType”:“ 1”,},{“ Symbol”: “ AUDCAD”,“出价”:“ 1.02173”,“询问”:“ 1.02347”,“点差”:“ 17.40”,“产品类型”:“ 1”,},{“符号”:“ FRA40”,“出价” :“ 5259.60”,“询问”:“ 5267.30”,“点差”:“ 7.70”,“产品类型”:“ 2”,},{“符号”:“ AUDUSD”,“出价”:“ 0.74858”,“询问“:” 0.74899“,”价差“:” 4.10“,”产品类型“:” 1“,},{”符号“:” USDHKD“,”出价“:” 7.77769“,”询问“:” 7.77956“,” Spread“:” 18.70“,” ProductType“:” 1“,},{” Symbol“:” NZDCHF“,” Bid“:” 0.68192“,” Ask“:” 0.68406“,” Spread“:” 21.40“, “ ProductType”:“ 1”,},{“ Symbol”:“ EURTRY”,“ Bid”:“ 3.86851”,“ Ask”:“ 3.87478”,“ Spread”:“ 62.70”,“ ProductType”:“ 1” ,},{“ Symbol”:“ AUDJPY”,“ Bid”:“ 83.469”,“ Ask”:“ 83.543”,“ Spread”:“ 7.40”,“ ProductType”:“ 1”,},{“ Symbol” :“ USDZAR”,“ Bid”:“ 13.3464”,“ Ask”:“ 13.3941”,“ Spread”:“ 477.00”,“ ProductType”:“ 1”,},{“ Symbol”:“ Bund”,“ Bid “:” 161.78“,”询问“:” 161.81“,”价差“:” 3.00“,”产品类型“:” 4“,},{”符号“:” USDMXN“,”出价“:” 18.81249 ","Ask":"18.83178","Spread":"192.90","ProductType":"1",},{"Symbol":"USDTRY","Bid":"3.54925","Ask":"3.5536","Spread":"43.50","ProductType":"1",},{"Symbol":"USDOLLAR","Bid":"12232.00","Ask":"12237.00","Spread":"5.00","ProductType":"7",},{"Symbol":"JPN225","Bid":"19195.00","Ask":"19205.00","Spread":"10.00","ProductType":"2",},{"Symbol":"UK100","Bid":"7197.80","Ask":"7198.90","Spread":"1.10","ProductType":"2",},{"Symbol":"HKG33","Bid":"24650.00","Ask":"24655.00","Spread":"5.00","ProductType":"2",},{"Symbol":"CADCHF","Bid":"0.72748","Ask":"0.72979","Spread":"23.10","ProductType":"1",},{"Symbol":"NAS100","Bid":"5582.80","Ask":"5583.80","Spread":"1.00","ProductType":"2",},{"Symbol":"NGAS","Bid":"3.2645","Ask":"3.2755","Spread":"11.00","ProductType":"3",},{"Symbol":"ZARJPY","Bid":"8.323","Ask":"8.361","Spread":"3.80","ProductType":"1",},{"Symbol":"GBPCAD","Bid":"1.76724","Ask":"1.76912","Spread":"18.80","ProductType":"1",},{"Symbol":"ESP35","Bid":"10712.00","Ask":"10720.00","Spread":"8.00","Pr “,” Ask“:” 18.83178“,” Spread“:” 192.90“,” ProductType“:” 1“,},{” Symbol“:” USDTRY“,” Bid“:” 3.54925“,” Ask“:” 3.5536“,” Spread“:” 43.50“,” ProductType“:” 1“,},{” Symbol“:” USDOLLAR“,” Bid“:” 12232.00“,” Ask“:” 12237.00“,” Spread“: “ 5.00”,“ ProductType”:“ 7”,},{“ Symbol”:“ JPN225”,“ Bid”:“ 19195.00”,“ Ask”:“ 19205.00”,“ Spread”:“ 10.00”,“ ProductType” :“ 2”,},{“ Symbol”:“ UK100”,“ Bid”:“ 7197.80”,“ Ask”:“ 7198.90”,“ Spread”:“ 1.10”,“ ProductType”:“ 2”,}, {“ Symbol”:“ HKG33”,“ Bid”:“ 24650.00”,“ Ask”:“ 24655.00”,“ Spread”:“ 5.00”,“ ProductType”:“ 2”,},{“ Symbol”:“ CADCHF “,”出价“:” 0.72748“,”询问“:” 0.72979“,”点差“:” 23.10“,”产品类型“:” 1“,},{”符号“:” NAS100“,”出价“:” 5582.80“,”询问“:” 5583.80“,”点差“:” 1.00“,”产品类型“:” 2“,},{”符号“:” NGAS“,”出价“:” 3.2645“,”询问“: “ 3.2755”,“价差”:“ 11.00”,“产品类型”:“ 3”,},{“符号”:“ ZARJPY”,“出价”:“ 8.323”,“询问”:“ 8.361”,“价差” :“ 3.80”,“ ProductType”:“ 1”,},{“ Symbol”:“ GBPCAD”,“ Bid”:“ 1.76724”,“ Ask”:“ 1.76912”,“ Spread”:“ 18.80”,“ ProductType “:” 1“,},{” Symbol“:” ESP35“,” Bid“:” 10712.00“,” Ask“:” 10720.00“,” Spread“:” 8.00“,” Pr oductType":"2",},{"Symbol":"GBPUSD","Bid":"1.29452","Ask":"1.29527","Spread":"7.50","ProductType":"1",},{"Symbol":"SPX500","Bid":"2384.18","Ask":"2384.68","Spread":"5.00","ProductType":"2",},{"Symbol":"GBPJPY","Bid":"144.336","Ask":"144.448","Spread":"11.20","ProductType":"1",},{"Symbol":"EUSTX50","Bid":"3554.00","Ask":"3555.00","Spread":"1.00","ProductType":"2",},{"Symbol":"TRYJPY","Bid":"31.378","Ask":"31.44","Spread":"6.20","ProductType":"1",},{"Symbol":"NZDCAD","Bid":"0.93642","Ask":"0.93862","Spread":"22.00","ProductType":"1",},{"Symbol":"EURNZD","Bid":"1.58644","Ask":"1.58916","Spread":"27.20","ProductType":"1",},{"Symbol":"XAUUSD","Bid":"1267.79","Ask":"1268.26","Spread":"47.00","ProductType":"5",},{"Symbol":"NZDUSD","Bid":"0.68587","Ask":"0.68692","Spread":"10.50","ProductType":"1",},{"Symbol":"NZDJPY","Bid":"76.489","Ask":"76.607","Spread":"11.80","ProductType":"1",},{"Symbol":"UKOil","Bid":"51.84","Ask":"51.89","Spread":"5.00","ProductType":"3",},{"Symbol":"CHFJPY","Bid":"112 oductType“:” 2“,},{” Symbol“:” GBPUSD“,” Bid“:” 1.29452“,” Ask“:” 1.29527“,” Spread“:” 7.50“,” ProductType“:” 1“, },{“ Symbol”:“ SPX500”,“ Bid”:“ 2384.18”,“ Ask”:“ 2384.68”,“ Spread”:“ 5.00”,“ ProductType”:“ 2”,},{“ Symbol”: “ GBPJPY”,“出价”:“ 144.336”,“询问”:“ 144.448”,“点差”:“ 11.20”,“产品类型”:“ 1”,},{“符号”:“ EUSTX50”,“出价” :“ 3554.00”,“询问”:“ 3555.00”,“点差”:“ 1.00”,“产品类型”:“ 2”,},{“符号”:“ TRYJPY”,“出价”:“ 31.378”,“询问“:” 31.44“,” Spread“:” 6.20“,” ProductType“:” 1“,},{” Symbol“:” NZDCAD“,” Bid“:” 0.93642“,” Ask“:” 0.93862“,” Spread“:” 22.00“,” ProductType“:” 1“,},{” Symbol“:” EURNZD“,” Bid“:” 1.58644“,” Ask“:” 1.58916“,” Spread“:” 27.20“, “ ProductType”:“ 1”,},{“ Symbol”:“ XAUUSD”,“ Bid”:“ 1267.79”,“ Ask”:“ 1268.26”,“ Spread”:“ 47.00”,“ ProductType”:“ 5” ,},{“ Symbol”:“ NZDUSD”,“ Bid”:“ 0.68587”,“ Ask”:“ 0.68692”,“ Spread”:“ 10.50”,“ ProductType”:“ 1”,},{“ Symbol” :“ NZDJPY”,“出价”:“ 76.489”,“询问”:“ 76.607”,“点差”:“ 11.80”,“产品类型”:“ 1”,},{“符号”:“ UKOil”,“出价“:” 51.84“,”询问“:” 51.89“,”价差“:” 5.00“,”产品类型“:” 3“,},{”符号“:” CHFJPY“,”出价“:” 112 .02","Ask":"112.148","Spread":"12.80","ProductType":"1",},{"Symbol":"EURCHF","Bid":"1.08416","Ask":"1.08459","Spread":"4.30","ProductType":"1",}]} {"Rates":[{"Symbol":"EURAUD","Bid":"1.45492","Ask":"1.45608","Spread":"11.60","ProductType":"1"},{"Symbol":"Copper","Bid":"2.6068","Ask":"2.6088","Spread":"2.00","ProductType":"3"},{"Symbol":"AUDNZD","Bid":"1.08999","Ask":"1.09177","Spread":"17.80","ProductType":"1"},{"Symbol":"EURSEK","Bid":"9.63786","Ask":"9.65569","Spread":"178.30","ProductType":"1"},{"Symbol":"CADJPY","Bid":"81.629","Ask":"81.708","Spread":"7.90","ProductType":"1"},{"Symbol":"USDCHF","Bid":"0.99463","Ask":"0.99527","Spread":"6.40","ProductType":"1"},{"Symbol":"USDCNH","Bid":"6.8973","Ask":"6.8993","Spread":"20.00","ProductType":"1"},{"Symbol":"US30","Bid":"20950.00","Ask":"20952.00","Spread":"2.00","ProductType":"2"},{"Symbol":"XAGUSD","Bid":"17.202","Ask":"17.25","Spread":"4.80","ProductType":"5"},{"Symbol":"USDSEK","Bid":"8.84794","Ask":"8.85542","Spread":"74.80","Prod .02“,” Ask“:” 112.148“,” Spread“:” 12.80“,” ProductType“:” 1“,},{” Symbol“:” EURCHF“,” Bid“:” 1.08416“,” Ask“ :“ 1.08459”,“价差”:“ 4.30”,“产品类型”:“ 1”,}]} {“费率”:[{“符号”:“ EURAUD”,“出价”:“ 1.45492”,“询问” :“ 1.45608”,“价差”:“ 11.60”,“产品类型”:“ 1”},{“符号”:“铜”,“出价”:“ 2.6068”,“询问”:“ 2.6088”,“价差” :“ 2.00”,“ ProductType”:“ 3”},{“ Symbol”:“ AUDNZD”,“ Bid”:“ 1.08999”,“ Ask”:“ 1.09177”,“ Spread”:“ 17.80”,“ ProductType” :“ 1”},{“ Symbol”:“ EURSEK”,“ Bid”:“ 9.63786”,“ Ask”:“ 9.65569”,“ Spread”:“ 178.30”,“ ProductType”:“ 1”},{“ Symbol“:” CADJPY“,” Bid“:” 81.629“,” Ask“:” 81.708“,” Spread“:” 7.90“,” ProductType“:” 1“},{” Symbol“:” USDCHF“,”出价“:” 0.99463“,”问价“:” 0.99527“,”价差“:” 6.40“,”产品类型“:” 1“},{”符号“:” USDCNH“,”出价“:” 6.8973“,”询问“:” 6.8993“,”价差“:” 20.00“,”产品类型“:” 1“},{”符号“:” US30“,”出价“:” 20950.00“,”询问“:” 20952.00“,” Spread“:” 2.00“,” ProductType“:” 2“},{” Symbol“:” XAGUSD“,” Bid“:” 17.202“,” Ask“:” 17.25“,” Spread“:” 4.80“,” ProductType“:” 5“},{” Symbol“:” USDSEK“,” Bid“:” 8.84794“,” Ask“:” 8.85542“,” Spread“:” 74.80“,” Prod uctType":"1"},{"Symbol":"AUDCHF","Bid":"0.74417","Ask":"0.74588","Spread":"17.10","ProductType":"1"},{"Symbol":"GER30","Bid":"12431.05","Ask":"12433.45","Spread":"2.40","ProductType":"2"},{"Symbol":"USOil","Bid":"49.16","Ask":"49.21","Spread":"5.00","ProductType":"3"},{"Symbol":"GBPNZD","Bid":"1.88546","Ask":"1.88762","Spread":"21.60","ProductType":"1"},{"Symbol":"EURCAD","Bid":"1.48748","Ask":"1.48893","Spread":"14.50","ProductType":"1"},{"Symbol":"EURUSD","Bid":"1.08977","Ask":"1.08997","Spread":"2.00","ProductType":"1"},{"Symbol":"AUS200","Bid":"5922.00","Ask":"5924.00","Spread":"2.00","ProductType":"2"},{"Symbol":"EURJPY","Bid":"121.512","Ask":"121.57","Spread":"5.80","ProductType":"1"},{"Symbol":"EURGBP","Bid":"0.84132","Ask":"0.84208","Spread":"7.60","ProductType":"1"},{"Symbol":"EURNOK","Bid":"9.34136","Ask":"9.36364","Spread":"222.80","ProductType":"1"},{"Symbol":"USDCAD","Bid":"1.36524","Ask":"1.36588","Spread":"6.40","ProductType":"1"},{"Symbol":"GBPCHF","Bid":"1.28753","Ask" uctType“:” 1“},{” Symbol“:” AUDCHF“,” Bid“:” 0.74417“,” Ask“:” 0.74588“,” Spread“:” 17.10“,” ProductType“:” 1“}, {“ Symbol”:“ GER30”,“ Bid”:“ 12431.05”,“ Ask”:“ 12433.45”,“ Spread”:“ 2.40”,“ ProductType”:“ 2”},{“ Symbol”:“ USOil” ,“出价”:“ 49.16”,“询问”:“ 49.21”,“点差”:“ 5.00”,“产品类型”:“ 3”},{“符号”:“ GBPNZD”,“出价”:“ 1.88546” ,“询问”:“ 1.88762”,“点差”:“ 21.60”,“产品类型”:“ 1”},{“符号”:“ EURCAD”,“出价”:“ 1.48748”,“询问”:“ 1.48893” ,“价差”:“ 14.50”,“产品类型”:“ 1”},{“符号”:“ EURUSD”,“出价”:“ 1.08977”,“询问”:“ 1.08997”,“价差”:“ 2.00” ,“ ProductType”:“ 1”},{“ Symbol”:“ AUS200”,“ Bid”:“ 5922.00”,“ Ask”:“ 5924.00”,“ Spread”:“ 2.00”,“ ProductType”:“ 2” },{“ Symbol”:“ EURJPY”,“ Bid”:“ 121.512”,“ Ask”:“ 121.57”,“ Spread”:“ 5.80”,“ ProductType”:“ 1”},{“ Symbol”:“ EURGBP“,”出价“:” 0.84132“,”询问“:” 0.84208“,”点差“:” 7.60“,”产品类型“:” 1“},{”符号“:” EURNOK“,”出价“:” 9.34136“,”询问“:” 9.36364“,”点差“:” 222.80“,”产品类型“:” 1“},{”符号“:” USDCAD“,”出价“:” 1.36524“,”询问“:” 1.36588“,” Spread“:” 6.40“,” ProductType“:” 1“},{” Symbol“:” GBPCHF“,” Bid“:” 1.28753“,” Ask“ :"1.28922","Spread":"16.90","ProductType":"1"},{"Symbol":"GBPAUD","Bid":"1.72838","Ask":"1.7303","Spread":"19.20","ProductType":"1"},{"Symbol":"USDJPY","Bid":"111.51","Ask":"111.537","Spread":"2.70","ProductType":"1"},{"Symbol":"USDNOK","Bid":"8.57607","Ask":"8.58684","Spread":"107.70","ProductType":"1"},{"Symbol":"AUDCAD","Bid":"1.02173","Ask":"1.02347","Spread":"17.40","ProductType":"1"},{"Symbol":"FRA40","Bid":"5259.60","Ask":"5267.30","Spread":"7.70","ProductType":"2"},{"Symbol":"AUDUSD","Bid":"0.74858","Ask":"0.74899","Spread":"4.10","ProductType":"1"},{"Symbol":"USDHKD","Bid":"7.77769","Ask":"7.77956","Spread":"18.70","ProductType":"1"},{"Symbol":"NZDCHF","Bid":"0.68192","Ask":"0.68406","Spread":"21.40","ProductType":"1"},{"Symbol":"EURTRY","Bid":"3.86851","Ask":"3.87478","Spread":"62.70","ProductType":"1"},{"Symbol":"AUDJPY","Bid":"83.469","Ask":"83.543","Spread":"7.40","ProductType":"1"},{"Symbol":"USDZAR","Bid":"13.3464","Ask":"13.3941","Spread":"477.00","ProductType":"1"},{"S :“ 1.28922”,“价差”:“ 16.90”,“产品类型”:“ 1”},{“符号”:“ GBPAUD”,“出价”:“ 1.72838”,“询问”:“ 1.7303”,“价差” :“ 19.20”,“ ProductType”:“ 1”},{“ Symbol”:“ USDJPY”,“ Bid”:“ 111.51”,“ Ask”:“ 111.537”,“ Spread”:“ 2.70”,“ ProductType” :“ 1”},{“ Symbol”:“ USDNOK”,“ Bid”:“ 8.57607”,“ Ask”:“ 8.58684”,“ Spread”:“ 107.70”,“ ProductType”:“ 1”},{“符号“:” AUDCAD“,”出价“:” 1.02173“,”询问“:” 1.02347“,”点差“:” 17.40“,”产品类型“:” 1“},{”符号“:” FRA40“,”出价”:“ 5259.60”,“询问”:“ 5267.30”,“点差”:“ 7.70”,“产品类型”:“ 2”},{“符号”:“ AUDUSD”,“出价”:“ 0.74858”,“询问“:” 0.74899“,”价差“:” 4.10“,”产品类型“:” 1“},{”符号“:” USDHKD“,”出价“:” 7.77769“,”询问“:” 7.77956“,” Spread“:” 18.70“,” ProductType“:” 1“},{” Symbol“:” NZDCHF“,” Bid“:” 0.68192“,” Ask“:” 0.68406“,” Spread“:” 21.40“,” ProductType“:” 1“},{” Symbol“:” EURTRY“,” Bid“:” 3.86851“,” Ask“:” 3.87478“,” Spread“:” 62.70“,” ProductType“:” 1“}, {“ Symbol”:“ AUDJPY”,“ Bid”:“ 83.469”,“ Ask”:“ 83.543”,“ Spread”:“ 7.40”,“ ProductType”:“ 1”},{“ Symbol”:“ USDZAR” ,“出价”:“ 13.3464”,“询问”:“ 13.3941”,“价差”:“ 477.00”,“产品类型”:“ 1”},{“ S ymbol":"Bund","Bid":"161.78","Ask":"161.81","Spread":"3.00","ProductType":"4"},{"Symbol":"USDMXN","Bid":"18.81249","Ask":"18.83178","Spread":"192.90","ProductType":"1"},{"Symbol":"USDTRY","Bid":"3.54925","Ask":"3.5536","Spread":"43.50","ProductType":"1"},{"Symbol":"USDOLLAR","Bid":"12232.00","Ask":"12237.00","Spread":"5.00","ProductType":"7"},{"Symbol":"JPN225","Bid":"19195.00","Ask":"19205.00","Spread":"10.00","ProductType":"2"},{"Symbol":"UK100","Bid":"7197.80","Ask":"7198.90","Spread":"1.10","ProductType":"2"},{"Symbol":"HKG33","Bid":"24650.00","Ask":"24655.00","Spread":"5.00","ProductType":"2"},{"Symbol":"CADCHF","Bid":"0.72748","Ask":"0.72979","Spread":"23.10","ProductType":"1"},{"Symbol":"NAS100","Bid":"5582.80","Ask":"5583.80","Spread":"1.00","ProductType":"2"},{"Symbol":"NGAS","Bid":"3.2645","Ask":"3.2755","Spread":"11.00","ProductType":"3"},{"Symbol":"ZARJPY","Bid":"8.323","Ask":"8.361","Spread":"3.80","ProductType":"1"},{"Symbol":"GBPCAD","Bid":"1.76724","Ask":"1.76912","Spre ymbol“:” Bund“,” Bid“:” 161.78“,” Ask“:” 161.81“,” Spread“:” 3.00“,” ProductType“:” 4“},{” Symbol“:” USDMXN“,”出价“:” 18.81249“,”问价“:” 18.83178“,”价差“:” 192.90“,”产品类型“:” 1“},{”符号“:” USDTRY“,”出价“:” 3.54925“,”询问“:” 3.5536“,”价差“:” 43.50“,”产品类型“:” 1“},{”符号“:” USDOLLAR“,”出价“:” 12232.00“,”询问“:” 12237.00“,” Spread“:” 5.00“,” ProductType“:” 7“},{” Symbol“:” JPN225“,” Bid“:” 19195.00“,” Ask“:” 19205.00“,” Spread“:” 10.00“,” ProductType“:” 2“},{” Symbol“:” UK100“,” Bid“:” 7197.80“,” Ask“:” 7198.90“,” Spread“:” 1.10“,” ProductType“:” 2“}, {“ Symbol”:“ HKG33”,“ Bid”:“ 24650.00”,“ Ask”:“ 24655.00”,“ Spread”:“ 5.00”,“ ProductType”:“ 2”},{“ Symbol”:“ CADCHF” ,“出价”:“ 0.72748”,“询问”:“ 0.72979”,“传播”:“ 23.10”,“产品类型”:“ 1”},{“符号”:“ NAS100”,“出价”:“ 5582.80” ,“问”:“ 5583.80”,“点差”:“ 1.00”,“产品类型”:“ 2”},{“符号”:“ NGAS”,“出价”:“ 3.2645”,“问”:“ 3.2755” ,“ Spread”:“ 11.00”,“ ProductType”:“ 3”},{“ Symbol”:“ ZARJPY”,“ Bid”:“ 8.323”,“ Ask”:“ 8.361”,“ Spread”:“ 3.80” ,“ ProductType”:“ 1”},{“ Symbol”:“ GBPCAD”,“ Bid”:“ 1.76724”,“ Ask”:“ 1.76912”,“ Spre ad":"18.80","ProductType":"1"},{"Symbol":"ESP35","Bid":"10712.00","Ask":"10720.00","Spread":"8.00","ProductType":"2"},{"Symbol":"GBPUSD","Bid":"1.29452","Ask":"1.29527","Spread":"7.50","ProductType":"1"},{"Symbol":"SPX500","Bid":"2384.18","Ask":"2384.68","Spread":"5.00","ProductType":"2"},{"Symbol":"GBPJPY","Bid":"144.336","Ask":"144.448","Spread":"11.20","ProductType":"1"},{"Symbol":"EUSTX50","Bid":"3554.00","Ask":"3555.00","Spread":"1.00","ProductType":"2"},{"Symbol":"TRYJPY","Bid":"31.378","Ask":"31.44","Spread":"6.20","ProductType":"1"},{"Symbol":"NZDCAD","Bid":"0.93642","Ask":"0.93862","Spread":"22.00","ProductType":"1"},{"Symbol":"EURNZD","Bid":"1.58644","Ask":"1.58916","Spread":"27.20","ProductType":"1"},{"Symbol":"XAUUSD","Bid":"1267.79","Ask":"1268.26","Spread":"47.00","ProductType":"5"},{"Symbol":"NZDUSD","Bid":"0.68587","Ask":"0.68692","Spread":"10.50","ProductType":"1"},{"Symbol":"NZDJPY","Bid":"76.489","Ask":"76.607","Spread":"11.80","ProductType":"1"},{"Symbol":"UKOil","B ad“:” 18.80“,” ProductType“:” 1“},{” Symbol“:” ESP35“,” Bid“:” 10712.00“,” Ask“:” 10720.00“,” Spread“:” 8.00“,” ProductType“:” 2“},{” Symbol“:” GBPUSD“,” Bid“:” 1.29452“,” Ask“:” 1.29527“,” Spread“:” 7.50“,” ProductType“:” 1“}, {“ Symbol”:“ SPX500”,“ Bid”:“ 2384.18”,“ Ask”:“ 2384.68”,“ Spread”:“ 5.00”,“ ProductType”:“ 2”},{“ Symbol”:“ GBPJPY” ,“出价”:“ 144.336”,“询问”:“ 144.448”,“价差”:“ 11.20”,“产品类型”:“ 1”},{“符号”:“ EUSTX50”,“出价”:“ 3554.00” ,“问”:“ 3555.00”,“点差”:“ 1.00”,“产品类型”:“ 2”},{“符号”:“ TRYJPY”,“出价”:“ 31.378”,“问”:“ 31.44” ,“ Spread”:“ 6.20”,“ ProductType”:“ 1”},{“ Symbol”:“ NZDCAD”,“ Bid”:“ 0.93642”,“ Ask”:“ 0.93862”,“ Spread”:“ 22.00” ,“ ProductType”:“ 1”},{“ Symbol”:“ EURNZD”,“ Bid”:“ 1.58644”,“ Ask”:“ 1.58916”,“ Spread”:“ 27.20”,“ ProductType”:“ 1” },{“ Symbol”:“ XAUUSD”,“ Bid”:“ 1267.79”,“ Ask”:“ 1268.26”,“ Spread”:“ 47.00”,“ ProductType”:“ 5”},{“ Symbol”:“ NZDUSD“,”出价“:” 0.68587“,”询问“:” 0.68692“,”点差“:” 10.50“,” ProductType“:” 1“},{” Symbol“:” NZDJPY“,” Bid“:” 76.489“,” Ask“:” 76.607“,” Spread“:” 11.80“,” ProductType“:” 1“},{” Symbol“:” UKOil“,” B id":"51.84","Ask":"51.89","Spread":"5.00","ProductType":"3"},{"Symbol":"CHFJPY","Bid":"112.02","Ask":"112.148","Spread":"12.80","ProductType":"1"},{"Symbol":"EURCHF","Bid":"1.08416","Ask":"1.08459","Spread":"4.30","ProductType":"1"}]} id“:” 51.84“,” Ask“:” 51.89“,” Spread“:” 5.00“,” ProductType“:” 3“},{” Symbol“:” CHFJPY“,” Bid“:” 112.02“,”询问“:” 112.148“,”传播“:” 12.80“,”产品类型“:” 1“},{”符号“:” EURCHF“,”出价“:” 1.08416“,”询问“:” 1.08459“,” Spread“:” 4.30“,” ProductType“:” 1“}]}

panic: json: cannot unmarshal string into Go value of type main.MsgRatesArray panic:json:无法将字符串解组为main.MsgRatesArray类型的Go值

goroutine 1 [running]: goroutine 1 [正在运行]:

main.main() main.main()

  /tmp/test.go:50 +0x52c 

With this code: 使用此代码:

package main

import (
        "log"
        "fmt"
        "net/http"
        "bytes"
        "io/ioutil"
        "strings"
        "github.com/pquerna/ffjson/ffjson"
)


type MsgRatesArray struct {
        RateQuote []MsgRateQuoteJson `json:"Rates"`
}
type MsgRateQuoteJson struct {
        SymbolName string `json:"Symbol"`
        SymbolBid int64 `json:"Bid"`
        SymbolAsk int64 `json:"Ask"`
        SymbolSpread int64 `json:"Spread"`
        SymbolPT string `json:"ProductType"`
}

var respBytes []byte

func main() {
    var msg MsgRatesArray
    response,err := http.Get("https://ratesjson.fxcm.com/DataDisplayer")
    if err != nil {
        log.Fatal(err)
    }
    defer response.Body.Close()
    respBytes, err := ioutil.ReadAll(response.Body)
    //Get bad JSON into string
    jsonBytes := respBytes[bytes.Index(respBytes, []byte("{")):bytes.LastIndex(respBytes, []byte("}"))+1]
    jsonString := string(jsonBytes)
    fmt.Println(jsonString)
    // Use a positive number to indicate max replacement count to fix bad JSON string so we can remove comma in JSON ARRAY.
    result := strings.Replace(jsonString, "\",}", "\"}", -1)
    fmt.Println(result)
    // Turn GOOD JSON string back to JSON BYTES (BIN)
    jsonBytes2, err := ffjson.Marshal(result)
    if err != nil {
        panic(err)
    }
    // Parse JSON !
    err = ffjson.Unmarshal(jsonBytes2, &msg)
    if err != nil {
        panic(err)
    }
}

What is wrong with type for json array? json数组的类型有什么问题?

In the returned json Bid , Ask , and Spread are json strings not integers, so change your type definition to this: 在返回的json BidAskSpread是json字符串而不是整数,因此将类型定义更改为:

type MsgRateQuoteJson struct {
    SymbolName   string `json:"Symbol"`
    SymbolBid    string `json:"Bid"`
    SymbolAsk    string `json:"Ask"`
    SymbolSpread string `json:"Spread"`
    SymbolPT     string `json:"ProductType"`
}

And marshaling a json string to get json bytes is not the correct way, just convert the string to a byte slice like this: 封送json字符串以获取json字节不是正确的方法,只需将字符串转换为如下所示的字节片:

jsonBytes2 := []byte(result)

... and you're good to go: ...而且您很高兴:

// Parse JSON !
err = ffjson.Unmarshal(jsonBytes2, &msg)
if err != nil {
    panic(err)
}

Edit : 编辑

If you want to convert those strings into specific types during the json unmarshaling, you can do so by defining an UnmarshalJSON method on the *MsgRateQuoteJson type, plus with the help of the strconv package, like this: 如果要在json解组期间将这些字符串转换为特定类型,可以通过在*MsgRateQuoteJson类型上定义UnmarshalJSON方法,并借助strconv包来实现,例如:

type MsgRateQuoteJson struct {
    SymbolName   string  `json:"Symbol"`
    SymbolBid    float64 `json:"Bid"`
    SymbolAsk    float64 `json:"Ask"`
    SymbolSpread float64 `json:"Spread"`
    SymbolPT     int64   `json:"ProductType"`
}

func (msg *MsgRateQuoteJson) UnmarshalJSON(data []byte) (err error) {
    m := map[string]string{}
    if err = ffjson.Unmarshal(data, &m); err != nil {
        return err
    }

    msg.SymbolName = m["Symbol"]
    if msg.SymbolBid, err = strconv.ParseFloat(m["Bid"], 64); err != nil {
        return err
    }
    if msg.SymbolAsk, err = strconv.ParseFloat(m["Ask"], 64); err != nil {
        return err
    }
    if msg.SymbolSpread, err = strconv.ParseFloat(m["Spread"], 64); err != nil {
        return err
    }
    if msg.SymbolPT, err = strconv.ParseInt(m["ProductType"], 10, 64); err != nil {
        return err
    }
    return nil
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM