...

Source file src/github.com/clbanning/mxj/v2/examples/leafnodes.go

Documentation: github.com/clbanning/mxj/v2/examples

     1  // https://groups.google.com/forum/#!topic/golang-nuts/pj0C5IrZk4I
     2  
     3  package main
     4  
     5  import (
     6     "fmt"
     7  
     8     "github.com/clbanning/mxj"
     9  )
    10  
    11  func main() {
    12     j := `{"jsonData":{
    13        "DataReference":[
    14           {
    15              "ParameterType":"test",
    16              "Applicationtype":[
    17                 {
    18                    "Application1":{
    19                       "ApplicationName":"app1",
    20                       "Param1":{
    21                          "Name":"app1.param1"
    22                       },
    23                       "Param2":{
    24                          "Name":"app1.param2"
    25                       }
    26                    },
    27                    "Application2":{
    28                       "ApplicationName":"app2",
    29                       "Param1":{
    30                          "Name":"app2.param1"
    31                       },
    32                       "Param2":{
    33                          "Name":"app2.param2"
    34                       }
    35                    }
    36                 }
    37              ]
    38           }
    39        ]
    40     }}`
    41  
    42     // unmarshal into a map
    43     m, err := mxj.NewMapJson([]byte(j))
    44     if err != nil {
    45        fmt.Println("err:", err)
    46        return
    47     }
    48     mxj.LeafUseDotNotation()
    49     l := m.LeafNodes()
    50     for _, v := range l {
    51        fmt.Println("path:", v.Path, "value:", v.Value)
    52     }
    53     /*
    54        Output (sequence not guaranteed):
    55        path: jsonData.DataReference.0.ParameterType value: test
    56        path: jsonData.DataReference.0.Applicationtype.0.Application1.ApplicationName value: app1
    57        path: jsonData.DataReference.0.Applicationtype.0.Application1.Param1.Name value: app1.param1
    58        path: jsonData.DataReference.0.Applicationtype.0.Application1.Param2.Name value: app1.param2
    59        path: jsonData.DataReference.0.Applicationtype.0.Application2.ApplicationName value: app2
    60        path: jsonData.DataReference.0.Applicationtype.0.Application2.Param1.Name value: app2.param1
    61        path: jsonData.DataReference.0.Applicationtype.0.Application2.Param2.Name value: app2.param2
    62     */
    63  }
    64  

View as plain text