Как передать массив ключей, пар значений в часть структуры golang через json

Этот поток может помочь.

/* Helper macros */
#define HEX__(n) 0x##n##LU
#define B8__(x) ((x&0x0000000FLU)?1:0) \
+((x&0x000000F0LU)?2:0) \
+((x&0x00000F00LU)?4:0) \
+((x&0x0000F000LU)?8:0) \
+((x&0x000F0000LU)?16:0) \
+((x&0x00F00000LU)?32:0) \
+((x&0x0F000000LU)?64:0) \
+((x&0xF0000000LU)?128:0)

/* User macros */
#define B8(d) ((unsigned char)B8__(HEX__(d)))
#define B16(dmsb,dlsb) (((unsigned short)B8(dmsb)<<8) \
+ B8(dlsb))
#define B32(dmsb,db2,db3,dlsb) (((unsigned long)B8(dmsb)<<24) \
+ ((unsigned long)B8(db2)<<16) \
+ ((unsigned long)B8(db3)<<8) \
+ B8(dlsb))


#include 

int main(void)
{
    // 261, evaluated at compile-time
    unsigned const number = B16(00000001,00000101);

    printf("%d \n", number);
    return 0;
}

Он работает! (Все кредиты отправляются Тому Торфсу.)

-2
задан aditanix 16 January 2019 в 00:36
поделиться

2 ответа

Вы можете делать все, что захотите, с помощью функции UnmarshalJSON.

Я сделал пример на детской площадке. https://play.golang.org/p/WY6OCR8K3Co

вы можете получить вывод: {A:[{Name:slide0001.html Value:Looking Ahead} {Name:slide0008.html Value:Forecast} {Name:slide0021.html Value:Summary}]}

var (
    jso = []byte(`
    {  
        "attributes":
        [
            {"slide0001.html": "Looking Ahead"},
            {"slide0008.html": "Forecast"},
            {"slide0021.html": "Summary"}
        ]
     }`)
)

type B struct {
    A As `json:"attributes"`
}

type As []A

type A struct {
    Name  string
    Value string
}

func (as *As) UnmarshalJSON(data []byte) error {
    var attr []interface{}
    if err := json.Unmarshal(data, &attr); err != nil {
        return err
    }
    if len(attr) > 0 {
        newAs := make([]A, len(attr))
        // i := 0
        for i, val := range attr {
            if kv, ok := val.(map[string]interface{}); ok && len(kv) > 0 {
                for k, v := range kv {
                    a := A{
                        Name:  k,
                        Value: v.(string),
                    }
                    newAs[i] = a
                    i++
                    break
                }
            }
        }
        *as = newAs
    }
    return nil
}
0
ответ дан Billy Yuan 16 January 2019 в 00:36
поделиться

Наконец-то выяснили правильный синтаксис. Мы должны передать массив структур через JSON.

{  
   "type":"string",
   "name":"string",
   "organization":
   {  
      "orgID":"1",
      "orgName":"string",
      "peer":
      {  
         "peerID":"1",
         "peerName":"string"
      },
      "attributes":
      [
        {"slide0001.html": "Looking Ahead"},
        {"slide0008.html": "Forecast"},
        {"slide0021.html": "Summary"}
      ]
    }
}
0
ответ дан aditanix 16 January 2019 в 00:36
поделиться
Другие вопросы по тегам:

Похожие вопросы: