Создание динамического JSON - PullRequest
0 голосов
/ 02 ноября 2019

Мне нужно создать динамический json, т. Е. Значение ключа которого варьируется, ниже упоминается json

[{"email":"xxx@gmail.com","location":{"set":"Redmond"},"fname":{"set":"xxxxx"},"clicked_time":{"set":"zz"},"domain":{"add":"ttt"}},{"email":"zzz@gmail.com","location":{"set":"Greece"},"fname":{"set":"zzzzz"},"clicked_time":{"set":"zzz"},"domain":{"add":"zxxxx"}}]

Я пытался использовать следующий код:

rows := []map[string]string{}
if i > 0 {
    row := make(map[string]string)
    for j:=0;j<len(record);j++ {
        key := header[j]
        value := record[j]
        row[key] = value  
    }   
    rows = append(rows, row)
}

Как мне добавить set toрасположение и добавление в домен для создания вложенной структуры, поскольку карта может иметь только одну строку типа или вложенную структуру?

1 Ответ

0 голосов
/ 04 ноября 2019

Возможно, я немного упустил этот момент, но я не понимаю, почему это так динамично, что не может быть обработано структурой и методом json unmarshal.

Пожалуйста, посмотритеследующий для примера

https://play.golang.org/p/8nrO36HQGhy

package main

import (
    "encoding/json"
    "fmt"
)


type (

    Details struct {

        Email           string  `json:"email"`
        Location        Entry   `json:"location"`
        FName           Entry   `json:"fname"`
        ClickedTime     Entry   `json:"clicked_time"`
        Domain          Entry   `json:"domain"`
    }

    Entry struct {
        Set             string  `json:"set"`
        Add                     string  `json:"add"`
    }

)


func main() {


    d := []byte(`[{
        "email": "xxx@gmail.com",
        "location": {
            "set": "Redmond"
        },
        "fname": {
            "set": "xxxxx"
        },
        "clicked_time": {
            "set": "zz"
        },
        "domain": {
            "add": "ttt"
        }
    }, {
        "email": "zzz@gmail.com",
        "location": {
            "set": "Greece"
         },
        "fname": {
            "set": "zzzzz"
        },
        "clicked_time": {
            "set": "zzz"
        },
        "domain": {
            "add": "zxxxx"
        }
    }]`)


    x := []Details{}
    _ = json.Unmarshal(d, &x)
    fmt.Printf("%+v\n", x)
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...