为了账号安全,请及时绑定邮箱和手机立即绑定

错误地转换为 JSON 字符串

错误地转换为 JSON 字符串

Go
三国纷争 2022-09-12 16:09:01
我正在编写一个API,该API对OSMR服务器执行查询并检索一些数据,尝试将此数据转换为JSON并在我的API中返回它,一切工作几乎正常,但是结果字符串中的数值不是数值,而是用字符“{}”替换。我不知道发生了什么,我已经研究了这个问题一个小时package mainimport (    "encoding/json"    "fmt"    "net/http"    "net/url"    "time"    "log"    "bytes"    "github.com/stretchr/objx"    "github.com/go-martini/martini")func PrettyJson(data interface{}) (string) {    buffer := new(bytes.Buffer)    encoder := json.NewEncoder(buffer)    encoder.SetIndent("", "    ")    err := encoder.Encode(data)    if err != nil {       return ""    }    return buffer.String()}func main() {    app := martini.Classic()    app.Get("/", func() string {        return "/"    })    app.Get("/routes", func(req *http.Request, res http.ResponseWriter) string {        query, err := url.ParseQuery(req.URL.RawQuery)        if err != nil {            log.Println(err)        }        var client = &http.Client{Timeout: 100 * time.Second}        if v1, v2 := query["src"], query["dst"]; v1 != nil && v2 != nil {            var routes_array []map[string]interface{}            for _, destination := range query["dst"] {                request_url := fmt.Sprintf("http://router.project-osrm.org/route/v1/driving/%s;%s?overview=false", query["src"][0], destination)                response, err := client.Get(request_url)                if err != nil {                    log.Fatal(err)                    return "{\"message\": \"internal server error\"}"                }                        buf := new(bytes.Buffer)                buf.ReadFrom(response.Body)                newStr := buf.String()                document, _ := objx.FromJSON(newStr)                            route := map[string]interface{}{                    "destination": destination,                    "distance":    document.Get("routes[0].distance"),                    "duration":    document.Get("routes[0].duration"),                }                routes_array = append(routes_array, route)            }        }
查看完整描述

1 回答

?
函数式编程

TA贡献1807条经验 获得超9个赞

个奥布吉克斯。值被封送到一个空对象,因为该类型没有任何导出的字段。

使用 Data 方法获取基础值。封送基础值。

route := map[string]interface{}{

    "destination": destination,

    "distance":    document.Get("routes[0].distance").Data(),

    "duration":    document.Get("routes[0].duration").Data(),

}


查看完整回答
反对 回复 2022-09-12
  • 1 回答
  • 0 关注
  • 95 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信