Skip to main content

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 }}