我有一個像下面這樣的 json,我正在嘗試為下面的 json 創建一個結構,它可以在我解組時為我存盤資料。
{
"clientMetrics": [
{
"clientId": 951231,
"customerData": {
"Process": [
"ABC"
],
"Mat": [
"KKK"
]
},
"legCustomer": [
8773
]
},
{
"clientId": 1234,
"legCustomer": [
8789
]
},
{
"clientId": 3435,
"otherIds": [
4,
32,
19
],
"legCustomer": [
10005
]
},
{
"clientId": 9981,
"catId": 8,
"legCustomer": [
13769
]
},
{
"clientId": 12124,
"otherIds": [
33,
29
],
"legCustomer": [
12815
]
},
{
"clientId": 8712,
"customerData": {
"Process": [
"College"
]
},
"legCustomer": [
951
]
},
{
"clientId": 23214,
"legCustomer": [
12724,
12727
]
},
{
"clientId": 119812,
"catId": 8,
"legCustomer": [
14519
]
},
{
"clientId": 22315,
"otherIds": [
32
],
"legCustomer": [
12725,
13993
]
},
{
"clientId": 765121,
"catId": 8,
"legCustomer": [
14523
]
}
]
}
clientMetrics是一個包含每個clientMetric物件的 json 陣列。每個clientMetric物件都可以有不同的欄位。我嘗試了類似下面的方法,但我對如何添加休息感到困惑,因為我來自 Java 背景,而且我沒有看到 golang 中有可用的設定。也對如何添加customerData物件感到困惑。
type ClientMetrics struct {
ClientId int64
CatId int64
}
將unmarshalljson 轉換為ClientMetricsgolang 結構串列的最佳方法是什么?
uj5u.com熱心網友回復:
你可以json to go在這里使用:https : //mholt.github.io/json-to-go/
但它會重復CustomerDatastruct 兩次,確保您應該洗掉其中之一。
我為您的場景創建了一個示例結構,如下所示:
type AutoGenerated struct {
ClientMetrics []struct {
ClientID int `json:"clientId"`
CustomerData struct {
Process []string `json:"Process"`
Mat []string `json:"Mat"`
} `json:"customerData,omitempty"`
LegCustomer []int `json:"legCustomer"`
OtherIds []int `json:"otherIds,omitempty"`
CatID int `json:"catId,omitempty"`
} `json:"clientMetrics"`
}
您可以在 go playground 中運行它:https : //go.dev/play/p/R1M1HfzpEny
uj5u.com熱心網友回復:
如果您使用 VS Code,有一些擴展可以完成這項作業。其中之一名為Paste JSON as Code。
- 安裝擴展
- 復制 JSON 并復制到剪貼板中 (ctrl c)
- 按 Ctrl Shift P 并選擇
Paste JSON as code - 輸入結構名稱并按回車鍵
如果這對您不起作用,您可以隨時使用此站點https://mholt.github.io/json-to-go/但最好使用取消選擇Inline type definitions選項后獲得的結構體。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/400784.html
