为了账号安全,请及时绑定邮箱和手机立即绑定

如何编组 JSON

如何编组 JSON

Go
胡子哥哥 2023-05-15 10:11:59
我正在尝试使用 Go 以特定格式编组 JSON。我正在遍历 JSON 并打印单个对象响应。我想要的是根据一种格式存储所有对象。现在我卡住了,像这样封送 JSON 结果:{     "Address":null,   "Email":"abc@hotmail.com",   "HashedPassword":"4233137d1c510f2e55ba5cb220b864b11033f156",   "DeHashedPassword":"123456",   "ID":"Gd0YhYEJdE6oejsjBm7xLTQ4lWIaRecbS-k=",   "IPAddress":null,   "Name":null,   "ObtainedFrom":"LinkedIn",   "Password":null,   "Phone":null,   "Username":null,   "Vin":null,   "Success":true}{     "Address":"",   "Email":"abc@hotmail.com",   "HashedPassword":"",   "DeHashedPassword":"123456",   "ID":"Jge4Mm6M-5-yJedG2ql48M9H2p7qP83aggM=",   "IPAddress":"",   "Name":"",   "ObtainedFrom":"DailyMotion.com",   "Password":"dm_51978c5a67a88",   "Phone":"",   "Username":"",   "Vin":"",   "Success":true}{     "Address":"",   "Email":"abc@hotmail.com",   "HashedPassword":"",   "DeHashedPassword":"123456",   "ID":"9k8llNeinyrmxhL7yg3zZ50rQiQk_BmzZS8=",   "IPAddress":"",   "Name":"",   "ObtainedFrom":"BreachCompilation",   "Password":"hello123",   "Phone":"",   "Username":"",   "Vin":"",   "Success":true}我想要得到的是像这样编组 json{"entries": [{"id": "CHzLLBdoJiwd7WaySw8QBOoxkj2lmKFhJK8=","email": "abc@hotmail.com","username": null,"password": null,"hashed_password": "4233137d1c510f2e55ba5cb220b864b11033f156","name": null,"vin": null,"address": null,"ip_address": null,"phone": null,"obtained_from": "LinkedIn"},{"id": "O6W3lxVMo_faf7MWoGGgkMb_CGcjo5vinFQ=","email": "abc@hotmail.com","username": "","password": "dm_51978c5a67a88","hashed_password": "","name": "","vin": "","address": "","ip_address": "","phone": "","obtained_from": "DailyMotion.com"}],"success": true}
查看完整描述

1 回答

?
慕沐林林

TA贡献2016条经验 获得超9个赞

您需要的是将所有结果添加到一个切片中,然后使用指向该切片的键“条目”编组一个映射或结构。


你的代码应该是这样的


groups := make([]ColorGroup, 0)

for i := 0; i < len(img.Entries); i++ {

    address := img.Entries[i].Address

    email1 := img.Entries[i].Email

    hashedPassword := img.Entries[i].HashedPassword

    deHashedPassword := "12233"


    id := img.Entries[i].ID

    iPAddress := img.Entries[i].IPAddress

    name := img.Entries[i].Name

    obtainedFrom := img.Entries[i].ObtainedFrom

    password := img.Entries[i].Password

    phone := img.Entries[i].Phone

    username := img.Entries[i].Username

    vin := img.Entries[i].Vin

    success := img.Success


    group := ColorGroup{

        Address:          address,

        Email:            email1,

        HashedPassword:   hashedPassword,

        DeHashedPassword: deHashedPassword,

        ID:               id,

        IPAddress:        iPAddress,

        Name:             name,

        ObtainedFrom:     obtainedFrom,

        Password:         password,

        Phone:            phone,

        Username:         username,

        Vin:              vin,

        Success:          success,

    }

    groups = append(groups, group)

}


b, err := json.Marshal(map[string]interface{}{

    "entries": groups,

})

if err != nil {

    fmt.Println("error:", err)

}

fmt.Println("New JSON\n", string(b))

还要更改 Marshaled 字段的命名,不要忘记json像这样用标签命名字段


type ColorGroup struct {

    ID               int    `json:"id"`

    Address          string `json:"address"`

    Email            string `json:"email"`

    HashedPassword   string `json:"hashed_password"`

    DeHashedPassword string `json:"de_hashed_password"`

    IPAddress        string `json:"ip_address"`

    Name             string `json:"name"`

    ObtainedFrom     string `json:"obtained_from"`

    Password         string `json:"password"`

    Phone            string `json:"phone"`

    Username         string `json:"username"`

    Vin              string `json:"vin"`

    Success          bool   `json:"success"`

}


查看完整回答
反对 回复 2023-05-15
  • 1 回答
  • 0 关注
  • 87 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信