構造体をループし、golangの配列にアクセスします

chowpay

私の問題は

  1. 各サーバーをループし、そのループ内でUsageDataをループできるようにしたい
  2. 私の現在のループでは、アセット全体の範囲についてエラーが発生します。理由はわかりません。
  3. アセットにアクセスできません。Server.UsageData

これが私のコードです:https ://go.dev/play/p/ttNVW5_Q4Ys

package main

import (
    "encoding/json"
    "fmt"
)

type Asset struct {
    Server struct {
        Host string `json:"host"`
        Port string `json:"port"`
    } `json:"server"`
    Postgres struct {
        Host      string `json:"host"`
        User      string `json:"user"`
        Password  string `json:"password"`
        DB        string `json:"db"`
        UsageData []struct {
            Region string `json:"Region"`
            Mbps   int    `json:"Mpbs"`
        } `json:"UsageData"`
    } `json:"database"`
}

func main() {
    jsonConfig := []byte(`[
    {
        "server":{
            "host":"serverA",
            "port":"8080"},
        "database":{
            "host":"serverA",
            "user":"db_user",
            "password":"supersecret",
            "db":"A_db",
            "UsageData":[{"Region":"US","Mbps":100}, {"Region":"EU","Mbps":140}]
        }
    },
    {
        "server":{
            "host":"serverB",
            "port":"8383"},
        "database":{
            "host":"serverB",
            "user":"db_user2",
            "password":"acbd123",
            "db":"B_db",
            "UsageData":[{"Region":"US","Mbps":58}, {"Region":"EU","Mbps":250}]
        }   
    }
]`)
    var assets []Asset
    err := json.Unmarshal(jsonConfig, &assets)
    if err != nil {
        panic(err)
    }
    fmt.Printf("Assets: %+v\n", assets)
    //fmt.Printf("Config: %+v\n", assets.Server.Host)
    //fmt.Printf("Config: %+v\n", assets.database.UsageData)
    //fmt.Printf("Config: %+v\n", assets.Server.UsageData)

    for _, asset := range assets {
        fmt.Printf("%v\n", asset)
        //for _, Usage := range assets.UsageData {
        //  fmt.Printf("%v\n",Usage)
        //}
    }
}

**正解のコード、ネストされた構造体を誤って呼び出していました**

https://go.dev/play/p/tEbA405WWbC

medasx

提供されたものは技術的に正しくjsonConfigありませんが、キーは一意である必要があります(質問を参照)。encoding/jsonは最後の出現で値をオーバーライドするようです。

したがって、2つのオプションがあります。

  1. に変更jsonConfig[{asset1}, {asset2}]ます(固定遊び場を参照)
  2. カスタムアンマーシャラーを実装する

私は間違いなく最初のオプションをお勧めします。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

構造体の配列内の構造体の要素にアクセスします

タプル構造体でラップされた列挙型構造体バリアントのフィールドにアクセスします

C ++は構造体の構造体配列の要素にアクセスします

構造体ポインタ-ポインタを使用して構造体の配列にアクセスする

構造体変数の配列を使用して構造体にアクセスする

文字列を使用してタイプ[] byteの構造体フィールドにアクセスする

その配列へのポインタを使用して、構造体の配列に含まれる構造体のフィールドにアクセスするにはどうすればよいですか?[C ++]

構造体フィールドに配列としてアクセスする方法はありますか?

JSON / CFML-構造体の配列をループします

構造体の配列とともに構造体の内部でqsort()を使用すると、正しい要素にアクセスできませんが、0

Matlabの構造体配列をセル配列に変換します

構造体配列からフィールドを抽出して、別の構造体配列に配置します

構造体配列を構造体のセルに、またはその逆に変換します。

Golang-ループごとに構造体の配列を割り当てます

json配列を構造体配列にアンマーシャルします

構造体値にアクセスし、構造体値を変更します

ポインタを使用して構造体の配列にアクセスします。(コードに問題があります)

構造体の配列をループし、特定の構造体値を出力しますか?

Matlabは構造体を文字列のセル配列に変換します

リフレクトを使用して構造体内の構造体フィールドにアクセスする

クローンを作成せずに、構造体の配列をRustの別の構造体配列にマップします

構造体1から構造体2を介してデータにアクセスしますか?

変数を使用してgolang構造体フィールドにアクセスする

「ポインタを使用して構造体の配列にアクセスする」別の方法

セルの長さを含むベクトルを使用して、ネストされた構造体をセル配列に変換します

派生構造体のベクトルの要素にアクセスしますか?

ctypesを使用して構造体の動的配列にアクセスする方法は?

構造体のポインタを使用して配列にアクセスする

Scala Spark:配列型の列の構造体の値にアクセスしますか?(または、匿名の構造体型列のメンバーにアクセスします)

TOP 一覧

  1. 1

    Unity:未知のスクリプトをGameObject(カスタムエディター)に動的にアタッチする方法

  2. 2

    セレンのモデルダイアログからテキストを抽出するにはどうすればよいですか?

  3. 3

    Ansibleで複数行のシェルスクリプトを実行する方法

  4. 4

    tkinterウィンドウを閉じてもPythonプログラムが終了しない

  5. 5

    Crashlytics:コンパイラー生成とはどういう意味ですか?

  6. 6

    GoDaddyでのCKEditorとKCfinderの画像プレビュー

  7. 7

    Windows 10 Pro 1709を1803、1809、または1903に更新しますか?

  8. 8

    Chromeウェブアプリのウェブビューの高さの問題

  9. 9

    モーダルダイアログを自動的に閉じる-サーバーコードが完了したら、Googleスプレッドシートのダイアログを閉じます

  10. 10

    Windows 10の起動時間:以前は20秒でしたが、現在は6〜8倍になっています

  11. 11

    Reactでclsxを使用する方法

  12. 12

    ファイル内の2つのマーカー間のテキストを、別のファイルのテキストのセクションに置き換えるにはどうすればよいですか?

  13. 13

    MLでのデータ前処理の背後にある直感

  14. 14

    グラフからテーブルに条件付き書式を適用するにはどうすればよいですか?

  15. 15

    Pythonを使用して同じ列の同じ値の間の時差を取得する方法

  16. 16

    mutate_allとifelseを組み合わせるにはどうすればよいですか

  17. 17

    ネットワークグラフで、ネットワークコンポーネントにカーソルを合わせたときに、それらを強調表示するにはどうすればよいですか?

  18. 18

    テキストフィールドの値に基づいて UIslider を移動します

  19. 19

    BLOBストレージからデータを読み取り、Azure関数アプリを使用してデータにアクセスする方法

  20. 20

    PowerShellの分割ファイルへのヘッダーの追加

  21. 21

    ソートされた検索、ターゲット値未満の数をカウント

ホットタグ

アーカイブ