当前位置: 首页 > 面试题库 >

golang无效字符'b'寻找值的开始

况唯
2023-03-14
问题内容

我正在尝试在其中发布带有xml消息的json。但是它返回

无效的字符“ b”正在寻找价值的起点

我认为可能的原因是我试图封送非json格式的return正文。

func (s *BackendConfiguration) Do(req *http.Request, v interface{}) error {
    log.Printf("Requesting %v %v%v\n", req.Method, req.URL.Host, req.URL.Path)
    start := time.Now()

    res, err := s.HTTPClient.Do(req)

    if debug {
        log.Printf("Completed in %v\n", time.Since(start))
    }

    if err != nil {
        log.Printf("Request to sakura failed: %v\n", err)
        return err
    }
    defer res.Body.Close()

    resBody, err := ioutil.ReadAll(res.Body)
    if err != nil {
        log.Printf("Cannot parse sakura response: %v\n", err)
        return err
    }

    if debug {
        log.Printf("sakura response: %q\n", resBody)
    }

    if v != nil {
        return json.Unmarshal(resBody, v)
    }

    return nil
}

错误发生在这一行

return json.Unmarshal(resBody, v)

问题答案:

该错误表明服务器未返回有效的JSON响应。我建议添加以下代码来调试问题:

err := json.Unmarshal(resBody, v)
if err != nil {
    log.Printf("error decoding sakura response: %v", err)
    if e, ok := err.(*json.SyntaxError); ok {
        log.Printf("syntax error at byte offset %d", e.Offset)
    }
    log.Printf("sakura response: %q", resBody)
    return err
}


 类似资料:
  • 问题内容: 我刚刚编写了第一个Go应用程序,该应用程序通过http下载并解组了简单的JSON对象。Http内容被压缩: 我用几个众所周知的例子(如此)。不幸的是,应用程序无法解析所需的JSON,并且出现了非常罕见的奇怪错误。我无法找出问题所在。任何帮助将不胜感激。 JSON输入 (使用Python进行调试) 源代码 (根据答案 更新 ) 错误 UPD: 谢谢大家。现在很明显,此问题的原因是HTTP

  • 问题内容: 当我走时,我收到以下错误消息: 安装的Docker版本: 使用以下方式安装: 我已确保网络存在并且可以访问其他站点。请帮忙 更新1:问题不能是设置MTU,因为几天后我可以从Docker集线器中将映像拉回到同一台机器上。 由于我在家庭网络中,因此该问题也可能不是HTTP_PROXY 问题答案: 该错误消息几乎没有误导性。问题不在于字符无效,而是网络配置错误。我有一个LAN接口和一个WLA

  • 问题内容: 我使用Golang HTTP请求获取json输出,如下所示。我尝试访问的Web服务是Micrsoft Translator https://msdn.microsoft.com/en- us/library/dn876735.aspx 我收到一个错误 因此,我尝试打印as字符串,它显示: 看来数据没有任何问题,所以我尝试通过创建相同的值 我发现原始数据可能有问题,因此我尝试比较两种格式

  • 问题内容: 最好使用内置的“ go”软件包及其一些子软件包(“ go / ast”,“ go / token”,“ go / printer”等)编写输出有效的go代码的go应用程序。 要创建字符串文字表达式,您需要创建一个ast.BasicLit: 在我的go程序中,我有一个字符串,我需要创建一个ast.BasicLit,该ast.BasicLit在输出时将生成一个字符串文字,该文字将忠实地再现

  • 问题内容: 如何获取os.Error的字符串值?即。分配给变量。 问题答案: 例如, 输出:

  • 我的应用程序未确认JDK 1.8。我试图使用一个带有字符串的开关盒作为开关。仅使用JavaDocs中的一个基本示例是的,我可以切换到if/else语句,但我不愿意。 我得到了,这意味着我使用的是旧版本的Java。。这不合理,因为我有jdk1。已安装8.0_11。 这会是我的Gradle档案中的一个问题吗?