4

全て。JSON でエンコードされた特定の種類の構成ファイルのラッパーを作成しようとしています。残念ながら、このファイルには C スタイルのコメント (//および/* */,) が含まれており、json.Unmarshal. Unmarshal にこれらのコメントを強制的に無視させる、または簡単に削除させる方法はありますか?

私はregexp今調べていますが、Go の初心者である私が数分で思いつくことができないかもしれないエレガントな解決策があることを願っています。

4

2 に答える 2

8

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))
}
于 2012-10-02T00:18:13.417 に答える
-1

JSON ではコメントが許可されていないため、必ず何かを書き留める必要があります。同様に、go json pkg が仕様の一部ではないコメントを無視することを促進した場合は驚くでしょう。

于 2012-10-01T23:52:29.880 に答える