如果我有以下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);
}
显然,如果找不到密钥,则需要进行错误处理,但为了清楚起见,我省略了这一点。
正如人们所看到的,我只想要以“%”开头的子字符串,所以字符串的所有其他部分都应该被丢弃。
弑天下
相关分类