我正在使用 Go 中的 json 結(jié)構(gòu)輸入流。我從 stdin 上的另一個(gè)應(yīng)用程序接收輸入流,但我無(wú)法更改通信協(xié)議。我遇到的問(wèn)題是每個(gè) json 結(jié)構(gòu)都以非 json 字符串行終止:“end”(不帶引號(hào))。我正在使用 Golang 編碼器/json 包來(lái)解碼我從標(biāo)準(zhǔn)輸入接收的 json。問(wèn)題是解碼器在我第二次用 msg 調(diào)用它時(shí)產(chǎn)生錯(cuò)誤:“無(wú)效字符 'e' 尋找值的開(kāi)頭”。當(dāng)然,問(wèn)題是“結(jié)束”字符串不是 json 編碼的。我想知道如何讓 Go 的 json 解碼器跳過(guò)這個(gè)字符串?一些示例輸入:{"command": "ack", "id": "1231231"}end{"command": "fail", "id": "1231231"}end{ "command": "log", // the message to log "msg": "hello world!"}end我嘗試過(guò)的事情:我聲明: endStr := make([]byte, 10)我嘗試使用 fmt.Fscanf(os.Stdin, "%s", endStr) 來(lái)讀取字符串,但沒(méi)有讀取任何數(shù)據(jù)。我嘗試使用 os.Stdin.Read(endStr),但它也沒(méi)有返回任何數(shù)據(jù)。在我讀取第一個(gè) json 結(jié)構(gòu)后,dec.Buffered() 返回一個(gè)包含“end”字符串的 io.Reader,但我不知道如何告訴解碼器跳過(guò)它。任何幫助,將不勝感激。
在 Go 中過(guò)濾 json 流中的非 json 內(nèi)容
達(dá)令說(shuō)
2021-06-01 13:08:56