我正在使用urfave/cli我的 go 程式,我想要一個 cli 標志來讀取像這樣的 json 值:
{"name":"foo","surname":"var"}
我目前正在將該變數讀取為 a cli.StringFlag,它回傳 a string。然后,我打算這樣json.Unmarshall做,但它不起作用。問題是stringcli庫回傳的是這樣的:
[{name foo} {surname var}]
這不再是 json 了。
有沒有辦法做到這一點?請注意,如果它回傳一個簡單的地圖,那也可以
uj5u.com熱心網友回復:
對于 Linux,嘗試使用 shell 轉義傳遞引數
#!/bin/bash
echo "{\"name\":\"foo\",\"surname\":\"var\"}"
在 go 程式中,只需編組這個字串引數
uj5u.com熱心網友回復:
問題是 shell (bash, ksh, csh, zsh, ...) 解釋
{"name":"foo","surname":"var"}
作為一系列裸詞和參考的詞標記:
| 代幣型別 | 價值 |
|---|---|
| 裸詞 | { |
| 參考的詞 | name |
| 裸詞 | : |
| 參考的詞 | foo |
| 裸詞 | , |
| 參考的詞 | surname |
| 裸詞 | : |
| 參考的詞 | var |
| 裸詞 | } |
碰巧的是,逗號 ( ,) 是一個 shell運算子,用于算術,并且基本上被丟棄了(至少在我使用的 zsh 中)。
然后將整體拼接起來得到
name:foo surname:var
您可以通過打開 shell 并執行命令來看到這一點
echo {"name":"foo","surname":"var"}
但是,如果您使用單引號 ( ') 參考 JSON 檔案:
echo '{"name":"foo","surname":"var"}'
你會得到你所期望的:
{"name":"foo","surname":"var"}
但是請注意,如果您的 JSON 檔案中的文本包含文字撇號/單引號 ( ', U 0027),這將失敗,因此您需要將 JSON 檔案中的所有此類事件替換為\,以轉義它們。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/514603.html
標籤:去
上一篇:"error":"在方案\"pkg/runtime/scheme.go:100\""}中沒有為v1.ServiceMonitor型別注冊
下一篇:如何接收上傳的檔案作為陣列
