第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

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

如何在 GO 中將字符串中的子字符串替換為 JSON 值?

如何在 GO 中將字符串中的子字符串替換為 JSON 值?

Go
哆啦的時光機 2022-08-15 16:41:31
如果我有以下JSON文件用于指定如何運行程序:{   "programBinary" : "/usr/bin/foo",   "extraArgs" : " --arg1=%argumentOne --arg2=%argumentTwo",   "argumentOne" : "foo",   "argumentTwo" : "bar"}在golang中,我如何解析extraArgs字符串以查找由%指定的JSON密鑰,并將它們替換為JSON文件中的值?我知道golang有一個內置的替換函數(shù),但我不清楚是如何解析字符串并找到僅以“%”開頭的標記?;旧希倚枰恍╊愃朴谝韵耮o-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);}顯然,如果找不到密鑰,則需要進行錯誤處理,但為了清楚起見,我省略了這一點。正如人們所看到的,我只想要以“%”開頭的子字符串,所以字符串的所有其他部分都應該被丟棄。
查看完整描述

1 回答

?
弒天下

TA貢獻1818條經驗 獲得超8個贊

您可以檢查正則表達式以查找模式“%”作為您的問題。但是,由于字符串很簡單,并且您只需要子字符串,因此請?zhí)鎿Q %paramName 的值。您只能使用字節(jié)。更換以解決您的問題。(我沒有使用字符串。替換,因為不需要解析為字符串)。

package main


import (

    "encoding/json"

    "log"

    "bytes"

)


func main() {

    byteValue := []byte(`{

       "programBinary" : "/usr/bin/foo",

       "extraArgs" : " --arg1=%argumentOne --arg2=%argumentTwo",

       "argumentOne" : "foo",

       "argumentTwo" : "bar"

    }`)

    var rawMap map[string]json.RawMessage;

    rawErr := json.Unmarshal(byteValue, &rawMap)

    if(rawErr != nil) {

        log.Printf("JSON Marshalling error (raw): %s\n" , rawErr.Error());

    }

    

    byteResult := make([]byte, len(byteValue))

    copy(byteResult, byteValue)

    

    for key, value := range rawMap {

        stringEscaped := bytes.Replace([]byte(value), []byte("\""), []byte(""), 2);//Can either remove quotes, replace them with single quotes, or escape with \" here

        byteResult = bytes.Replace(byteResult, []byte("%"+key), stringEscaped, 1)

    }   

    log.Printf("Result:\n %s", string(byteResult))

}


查看完整回答
反對 回復 2022-08-15
  • 1 回答
  • 0 關注
  • 177 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

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

公眾號

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