transform.Unmarshal
transform.Unmarshal
(別名 unmarshal
) は入力をパースして、マップまたは配列に変換します。 サポートされている形式は、 JSON、TOML、YAML、XML、CSV です。
この関数は、Hugo パイプ
または ページバンドル
を介して作成された Resource
、または単に文字列を受け入れます。 以下の 2 つの例では、同じマップが生成されます。
{{ $greetings := "hello = \"Hello Hugo\"" | transform.Unmarshal }}`
{{ $greetings := "hello = \"Hello Hugo\"" | resources.FromString "data/greetings.toml" | transform.Unmarshal }}
上記の両方の例で、操作できるマップが得られます。
{{ $greetings.hello }}
上記は、 Hello Hugo
を出力します。
CSV オプション
CSV を入力とする Unmarshal では、以下のような、いくつかのオプションを設定できます。
- delimiter
- 使用される区切り文字で、デフォルトは
,
です。 - comment
- CSV で使用されるコメント文字です。 設定されている場合、前に空白がないコメント文字で始まる行は無視されます。
例:
{{ $csv := "a;b;c" | transform.Unmarshal (dict "delimiter" ";") }}
XML データ
便宜上、Hugo を使用すると、JSON、TOML、および YAML にアクセスするのと同じ方法で XML データにアクセスできます。データにアクセスするときにルートノードを指定する必要はありません。
以下のドキュメントの <title>
のコンテンツを取得するには、{{ .message.title }}
を使用します。
<root>
<message>
<title>Hugo rocks!</title>
<description>Thanks for using Hugo</description>
</message>
</root>
次の例は、RSS フィードの項目を一覧表示します。
{{ with resources.GetRemote "https://example.com/rss.xml" | transform.Unmarshal }}
{{ range .channel.item }}
<strong>{{ .title | plainify | htmlUnescape }}</strong><br />
<p>{{ .description | plainify | htmlUnescape }}</p>
{{ $link := .link | plainify | htmlUnescape }}
<a href="{{ $link }}">{{ $link }}</a><br />
<hr>
{{ end }}
{{ end }}