2017-09-05 10 views
0

誰かが私に次のJSONを解析するのに役立つでしょうか?タグは、 "["/"]" ブラケットが含まれていないが、左側の変数名は不定あります不変のjson変数名を解析する方法

例1:

{ 
    "value": 569000000, 
    "tags": { 
     "importerId": "catchacar", 
     "jvmProcess": "12367A" 
    } 
} 

例2:

{ 
    "value": 519, 
    "tags": { 
     "cluster": "cluster-29042", 
     "valueName": "open-files" 
    }, 
    "time": "2017-09-05T11:03:57.877Z" 
} 

など

任意の左辺の値をキャッチする構造体を定義するにはどうすればよいですか?私は以下を見つけました:

type JSONTag struct { 
    ValueName string `json:"valueName"` <--- what to write here ???? 
    Value  string `json:"value"` 
} 

type JSONMessage struct { 
    Value float64 `json:"value"` 
    Time string `json:"time"` 
    Tags []JSONTag `json:"tags"` 
} 

group := JSONMessage{ 
    Value: 123, 
    Time: "2017-09-01T14:26:33.773Z", 
    Tags: []JSONTag{JSONTag{"valName1", "val1"}}, 
} 

しかしこれは括弧を生成し、必要とします。例:

{ 
    "value": 123, 
    "time": "2017-09-01T14:26:33.773Z", 
    "tags": [ 
    { 
     "valueName": "valName1", 
     "value": "val1" 
    } 
    ] 
} 

ありがとうございました!

答えて

0

ソリューション:

type JSONTag struct { 
    ValueName string `json:"valueName"` 
    Value  string `json:"value"` 
} 

type JSONMessage struct { 
    Value float64   `json:"value"` 
    Time string   `json:"time"` 
    Tags map[string]string `json:"tags"` 
} 
... 

// usage: 
group := JSONMessage{ 
    Value: 123, 
    Time: "2017-09-01T14:26:33.773Z", 
    Tags: map[string]string{"foo": "aaa", "bar": "aaa"}, 
} 

結果:

{ 
    "value": 123, 
    "time": "2017-09-01T14:26:33.773Z", 
    "tags": { 
    "bar": "aaa", 
    "foo": "aaa" 
    } 
} 
関連する問題