全部的C風格評論。我試圖編寫一個特定類型的配置文件,這是JSON編碼的包裝。不幸的是,這個文件包含C風格的註釋(//
和/* */
),並且這些導致了json.Unmarshal
中的錯誤。有沒有辦法強制Unmarshal忽略這些評論,或以其他方式輕鬆刪除它們?刪除[]字節
我正在調查regexp
現在,但我希望有一個優雅的解決方案,作爲Go的初學者,我可能無法在幾分鐘內想出來。
全部的C風格評論。我試圖編寫一個特定類型的配置文件,這是JSON編碼的包裝。不幸的是,這個文件包含C風格的註釋(//
和/* */
),並且這些導致了json.Unmarshal
中的錯誤。有沒有辦法強制Unmarshal忽略這些評論,或以其他方式輕鬆刪除它們?刪除[]字節
我正在調查regexp
現在,但我希望有一個優雅的解決方案,作爲Go的初學者,我可能無法在幾分鐘內想出來。
由於JSON規範不允許評論,您必須刪除評論。正則表達式可以完成這項工作。
package main
import (
"fmt"
"regexp"
)
var bytes = []byte(`// this is a line comment
this is outside the comments
/* this
is
a
multi-line
comment */`)
func main() {
re := regexp.MustCompile("(?s)//.*?\n|/\\*.*?\\*/")
newBytes := re.ReplaceAll(bytes, nil)
fmt.Println(string(newBytes))
}
因爲JSON不允許評論,所以你肯定需要寫點東西,所以我會很驚訝,如果去的json pkg促成忽略不屬於規範的評論。
這完成了這項工作。非常感謝你! –
錯誤:http://play.golang.org/p/PC1DQDj0Wf – zzzz
@jnml你說得對(雖然我可能會抱怨字符串末尾沒有換行符)。如果他/她感興趣,我會把它作爲練習提交給提問者。 –