第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何查找“無效字符 ',' 正在尋找值的開頭”錯誤消息

如何查找“無效字符 ',' 正在尋找值的開頭”錯誤消息

Go
肥皂起泡泡 2021-09-27 10:42:33
我有一個簡短的 Go 程序,它運行g(shù)o list -json多個包的命令,將命令每次運行的輸出存儲在 json.RawMessage 中,將每個 json.RawMessage 附加到 json.RawMessages 的一部分中,然后將結(jié)果返回到服務器在將每個 json.RawMessages 連接在一起并壓縮 json 之后。但是,運行時會生成一條錯誤消息,json.Compact但無法找到其來源。谷歌搜索此錯誤消息表明,大多數(shù)似乎遇到它的人 - 無論是無效的,還是其他一些角色 - 都很難找到它的來源。invalid character ',' looking for beginning of value帶有注釋的代碼可以在 play.golang.org 上查看(雖然它不會在那里運行),也可以在下面查看。問題:你能解釋一下這個錯誤的來源以及如何預防嗎?(請注意,某些軟件包僅用于測試目的)package mainimport (    "expvar"    "encoding/json"    "bytes"    "fmt"    "github.com/go-martini/martini"    "github.com/zenazn/goji"    "github.com/zenazn/goji/web"    "go/build"    "log"    "math/rand"    "net/http"    _ "net/http/pprof"    "os/exec")type myType struct {    J []json.RawMessage}var pack map[string]stringtype GoList struct {    Imports []string}type Import struct {    Dir        string    ImportPath string    Name       string    Target     string    Standard   bool    Root       string    GoFiles    []string    Imports    []string    Deps       []string}const contentTypeJSON = "application/json"func main() {    http.HandleFunc("/importgraph", func(w http.ResponseWriter, r *http.Request) { importGraph(w, r) })    http.HandleFunc("/", handler)    http.ListenAndServe(":8080", nil)}func handler(w http.ResponseWriter, r *http.Request) {    fmt.Println("Inside handler")    fmt.Fprintf(w, "Hello world from my Go program!")}func importGraph(w http.ResponseWriter, r *http.Request) {    pack = make(map[string]string)    var t myType    cmd := exec.Command("go", "list", "-json")    stdout, err := cmd.Output()    if err != nil {        println(err.Error())        return    }    var list GoList    err = json.Unmarshal(stdout, &list)    for _, d := range list.Imports {        //get the imports for each of the packages listed by go list -json        t.imports(d)    }
查看完整描述

3 回答

?
慕無忌1623718

TA貢獻1744條經(jīng)驗 獲得超4個贊

首先,正如已評論的那樣,您確定不能go/build直接使用該包而不是運行g(shù)o list嗎?


我不會在 HTTP 處理程序中使用println(或fmt.Println)。使用log.Println和/或?qū)㈠e誤放入ResponseWriter. 此外,最好ListenAndServe用log.Fatal.


打印/記錄error值時,您可以只使用err,無需使用err.Error().


此外,當您實際上想要做一些比報告/記錄錯誤消息更詳細的事情時,您可以查看它的類型和其他信息。例如,log.Printf("verbose error info: %#v", err)給出:


&json.SyntaxError{msg:"invalid character ',' looking for beginning of value", Offset:0}

我試過這個是因為我知道json包返回各種錯誤類型和附加信息,我希望偏移值會有所幫助。如果是這樣,那么這樣的事情可能會有所幫助:


if err := json.Compact(…) {

    if err != nil {

        log.Println("json.Compact:", err)

        if serr, ok := err.(*json.SyntaxError); ok {

            log.Println("Occurred at offset:", serr.Offset)

            // … something to show the data in buff around that offset …

        }

    }

}

但偏移零沒有幫助:(


因此,盡管這不能確定您的問題,但希望它可以對您的進一步調(diào)查有所幫助。


編輯:


所以添加后:


log.Println("Write file:", ioutil.WriteFile("data.json", buff.Bytes(), 0600))

對于上面的錯誤處理塊,我然后在結(jié)果文件上運行了一個 JSON 驗證器,它識別了這一部分:


        "XTestImports": [

                "io",

                "log",

                "net"

        ]

},,{

        "Dir": "/usr/local/go/src/mime",

        "ImportPath": "mime",

        "Name": "mime",

注意雙,,.


這應該告訴您代碼中的錯誤是什么。但如果沒有,您需要在處理t.J或構(gòu)建時跳過空條目。后者更好,只涉及:


    if len(newj) > 0 {

        myObj.J = append(myObj.J, newj)

    }

(順便說一句,您不檢查錯誤,json.Unmarshal因此不清楚它是否應該為空或由于前面的錯誤而為空。永遠不要忽略錯誤返回?。?/p>


查看完整回答
反對 回復 2021-09-27
?
大話西游666

TA貢獻1817條經(jīng)驗 獲得超14個贊

我在 Go 程序中也遇到了同樣的錯誤消息,但是當我的 HTTP 響應解析器期望 JSON 時,錯誤消息在 HTTP 響應錯誤中,采用 HTML 格式。

對我來說,解決方案是更改我的請求以包括將Content-Type標頭設置為application/json. 您如何執(zhí)行此操作取決于您碰巧使用的是哪個 http 客戶端庫;如果您有權(quán)訪問http.Header核心類型,則可以使用.Set(...).

我意識到這個修復對我來說的范圍可能不適用于最初的問題,但我在谷歌搜索后首先來到這里并認為這會幫助其他人,因為乍一看消息并不是特別明顯。提示是無效<字符是錯誤/響應中的第一個 HTML 字符,這很可能是請求類型未設置為 的結(jié)果application/json,因此服務器以非 JSON 響應進行響應。


查看完整回答
反對 回復 2021-09-27
?
幕布斯7119047

TA貢獻1794條經(jīng)驗 獲得超8個贊

對我來說,問題是我試圖解析已經(jīng)解析的 JSON。


查看完整回答
反對 回復 2021-09-27
  • 3 回答
  • 0 關(guān)注
  • 318 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號