Разбор динамического JSON в го - PullRequest
0 голосов
/ 30 июня 2018

Я пытаюсь проанализировать следующую структуру json, где поля, отмеченные "val1" и "val2", постоянно меняются, поэтому я не могу использовать предопределенную структуру. Как я могу проанализировать этот JSON таким образом, чтобы иметь возможность циклически проходить через каждый "val"? Спасибо!

 {"result":true,"info":{"funds":{"borrow":{"val1":"0","val2":"0"},"free":{"val1":"0","val2":"0"},"freezed":{"val1":"0","val2":"0"}}}}

Ответы [ 2 ]

0 голосов
/ 03 июля 2018
package main

import (
    "fmt"
    "encoding/json"
)

type Root struct {
    Result bool `json:"result"`
    Info   Info `json:"info"`
}

type Info struct {
    Funds struct {
        Borrow, Free, Freezed map[string]interface{}
    } `json:"funds"`
}

func main() {
    var rootObject Root
    jsonContent := " {\"result\":true,\"info\":{\"funds\":{\"borrow\":{\"val1\":\"0\",\"val2\":\"0\"},\"free\":{\"val1\":\"0\",\"val2\":\"0\"},\"freezed\":{\"val1\":\"0\",\"val2\":\"0\"}}}}"

    if err := json.Unmarshal([]byte(jsonContent), &rootObject); err != nil {
        panic(err)
    }
    fmt.Println(rootObject)
}
0 голосов
/ 30 июня 2018

Разобрав следующую структуру, я могу пройтись по нужным полям.

type Fields struct {
Result bool `json:"result"`
Info   struct {
    Funds struct {
        Borrow, Free, Freezed map[string]interface{}
    } `json:"funds"`
} `json:"info"`
}
...