簡體   English   中英

如何處理 Go 中具有相同元素的嵌套結構

[英]How to deal with a nested struct with the same elements in Go

我一直在為我的一個小項目編寫這段代碼,我想解析一些 JSON 數據,如下所示:

{
    "payloads": [
        {
            "xss": [
                {
                    "payload": "{{RANDSTR}}\"><scRiPT>alert(1)</ScrIPT>{{RANDSTR}}",
                    "search": "{{RANDSTR}}\"><scRi"
                },
                {
                    "payload": "{{RANDSTR}}\"",
                    "search": "{{RANDSTR}}\""
                },
                {
                    "payload": "{{RANDSTR}}'",
                    "search": "{{RANDSTR}}'"
                }
            ],
            "tpli": [
                {
                    "payload": "{{RANDSTR}}${{ {{RANDINT}} * {{RANDINT}} }}",
                    "search": "{{RANDSTR}}{{RANDINT}}"
                },
                {
                    "payload": "{{RANDSTR}}{{ {{RANDINT}} * {{RANDINT}} }}",
                    "search": "{{RANDSTR}}{{RANDINT}}"
                },
                {
                    "payload": "{{RANDSTR}}{! {{RANDINT}} * {{RANDINT}} !}",
                    "search": "{{RANDSTR}}{{RANDINT}}"
                },
                {
                    "payload": "{{RANDSTR}}{% {{RANDINT}} * {{RANDINT}} %}",
                    "search": "{{RANDSTR}}{{RANDINT}}"
                }
            ]
        }
    ]
}

這是我的結構聲明:


type Payload struct {
    Payload []struct {
        Payload string `json:"payload"`
        Search  string `json:"search"`
    }
}

type Payloads struct {
    Payloads []Payload `json:"payloads"`
}

我知道這不是我應該做的,但我不確定最好的方法。 我不想指定密鑰(xss、tpli 等),因為我想輕松擴展此文件而無需修改 Go 文件。

有人可以指出我如何實現這一目標的正確方向嗎?

提前致謝。

Model 它是這樣的:

type Payloads struct {
    Payloads []map[string][]Payload `json:"payloads"`
}

type Payload struct {
    Payload string `json:"payload"`
    Search  string `json:"search"`
}

游樂場: https://play.golang.org/p/S6nnOKkADUO

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM