亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

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

我可以將 json 對象作為 go 中的 cli 標志的值傳遞嗎?

我可以將 json 對象作為 go 中的 cli 標志的值傳遞嗎?

Go
尚方寶劍之說 2023-02-28 20:27:25
我正在為我的 go 程序使用urfave/cli,我想要一個 cli 標志來讀取這樣一個 json 值:{"name":"foo","surname":"var"}我目前正在將該變量讀取為 a cli.StringFlag,它返回 a string。然后,我打算json.Unmarshall這樣做,但它不起作用。問題是stringcli庫返回的是這樣的:[{name foo} {surname var}]這不再是 json 了。有沒有辦法做到這一點?請注意,如果它返回一個簡單的地圖,那也可以
查看完整描述

2 回答

?
倚天杖

TA貢獻1828條經驗 獲得超3個贊

對于 Linux,嘗試使用 shell escape 傳遞參數

#!/bin/bash

echo "{\"name\":\"foo\",\"surname\":\"var\"}"

在 go 程序中,只需編組此字符串參數


查看完整回答
反對 回復 2023-02-28
?
HUX布斯

TA貢獻1876條經驗 獲得超6個贊

問題是 shell (bash, ksh, csh, zsh, ...) 解釋

{"name":"foo","surname":"var"}

作為一系列裸詞引用詞標記:

代幣類型價值
裸詞{
引用的詞name
裸詞:
引用的詞foo
裸詞,
引用的詞surname
裸詞:
引用的詞var
裸詞}

碰巧,逗號 ( ,) 是一個 shell operator,用于算術,并且基本上被丟棄(至少在 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 文檔中的所有此類事件替換為 以\,轉義它們。


查看完整回答
反對 回復 2023-02-28
  • 2 回答
  • 0 關注
  • 111 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號