【发布时间】:2021-06-08 20:55:03
【问题描述】:
如果我有以下 JSON 文件用于指定如何运行程序:
{
"programBinary" : "/usr/bin/foo",
"extraArgs" : " --arg1=%argumentOne --arg2=%argumentTwo",
"argumentOne" : "foo",
"argumentTwo" : "bar"
}
在 golang 中,如何解析 extraArgs 字符串以找到 % 指定的 JSON 键并将其替换为 JSON 文件中的值?
我知道 golang 有一个内置的替换功能,但我不清楚的是如何解析字符串并找到 仅 以“%”开头的标记。
基本上我需要一些类似于以下 go-pseudocode 的内容:
var rawMap map[string]json.RawMessage;
rawErr := json.Unmarshal(byteValue, &rawMap)
if(rawErr != nil) {
log.Printf("JSON Marshalling error (raw): %s\n" , rawErr.Error());
}
extraArgString, _ := rawMap["extraArgs"];
argTokens := magicStringTokenizer(extraArgString, "%"); //Need code for this!
for _, argToken := range argTokens {
argValue, _ := rawMap[argToken];
extraArgString = string.Replace(extraArgString, argToken, argValue);
}
显然,如果找不到密钥,则需要进行错误处理,但为了清楚起见,我省略了。
正如我们所看到的,我只想要以“%”开头的子字符串,所以字符串的所有其他部分都应该被丢弃。
【问题讨论】:
标签: json string go replace tokenize