ホームページ  >  記事  >  バックエンド開発  >  提供された記事の内容に応じた、質問形式のタイトル オプションをいくつか示します。 **直接的かつ問題重視:** * **キーが動的であるときに Go でスライスのマップをアンマーシャリングする方法

提供された記事の内容に応じた、質問形式のタイトル オプションをいくつか示します。 **直接的かつ問題重視:** * **キーが動的であるときに Go でスライスのマップをアンマーシャリングする方法

Susan Sarandon
Susan Sarandonオリジナル
2024-10-25 11:02:02565ブラウズ

Here are a few title options in a question format, catering to the content of your provided article:

**Direct &  Problem-Focused:**

* **How to Unmarshal a Map of Slices in Go When Keys are Dynamic?**
* **Empty Map After Unmarshaling: Why is my Go Struct

構造体のスライスのマップへのカスタム アンマーシャリング

問題の説明

JSON アンマーシャリングを理解するのは難しい場合があります。この記事では、次のコード スニペットを使用して Go でマップをアンマーシャリングするときに発生した問題について説明します:

<code class="go">import (
    "encoding/json"
    "fmt"
)

type OHLC_RESS struct {
    Pair map[string][]Candles
    Last int64 `json:"last"`
}

type Candles struct {
    // ...
}

func (c *Candles) UnmarshalJSON(d []byte) error {
    // ...
}

func main() {
    // ...
}</code>

コードを実行すると、Last フィールドが正しくアンマーシャリングされているにもかかわらず、ペア マップは空のままです。

解決策

オプション 1: 構造体の定義を調整する

提供された JSON の例に対する最も簡単な解決策は、マップを削除し、構造体定義を JSON 構造に合わせることです。

<code class="go">type OHLC_RESS struct {
    Pair []Candles `json:"XXBTZUSD"`
    Last int64     `json:"last"`
}</code>

オプション 2: カスタム Unmarshaler を実装する

マップ キーが動的でフィールド タグにハードコーディングできない場合は、json.Unmarshaler のカスタム実装インターフェースが必要です。これは、OHLC_RESS 構造体に UnmarshalJSON メソッドを実装することで実現できます。

<code class="go">func (r *OHLC_RESS) UnmarshalJSON(d []byte) error {
    // ...
}</code>

UnmarshalJSON 実装は、JSON キーと値を個別にデコードし、「最後の」要素を残りとは異なる方法で処理します。残りの要素はペア マップにアンマーシャリングされます。

以上が提供された記事の内容に応じた、質問形式のタイトル オプションをいくつか示します。 **直接的かつ問題重視:** * **キーが動的であるときに Go でスライスのマップをアンマーシャリングする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。