我有一個存儲JSON的數據庫和一個通過HTTP post提供外部API的服務器,可以更改此數據庫中的值。數據庫由內部的不同進程使用,因此具有通用的命名方案。Go-複製結構之間的所有常見字段
顧客看到的鑰匙是不同的,但映射1:1與數據庫中的鑰匙(有未暴露的鑰匙)。例如:
這是在數據庫:
{ "bit_size": 8, "secret_key": false }
,這是呈現給客戶:
{ "num_bits": 8 }
該API可相對於字段名稱改變,但數據庫總是有一致的鍵。
我有一個名爲域的結構相同,標誌不同的JSON編碼器:
type DB struct {
NumBits int `json:"bit_size"`
Secret bool `json:"secret_key"`
}
type User struct {
NumBits int `json:"num_bits"`
}
我使用encoding/json
做元帥/解組。
是reflect
正確的工具嗎?有沒有更簡單的方法,因爲所有的鍵都是一樣的?我在想某種memcpy
(如果我保持用戶字段的順序相同)。
什麼是你想實現什麼?在我看來,解決方案已經在那裏,也許沒有意識到。添加一個'func(db DB)GetUser()用戶{返回用戶{NumBits:db.NumBit}}'的方法,就完成了。我想你還應該看看接口來屏蔽內部參數,並檢查編碼/ json中的Marshaler接口。不管怎樣,不使用反射總是更好。 – Philip 2012-07-17 18:33:39
@Philip - 我有一個以上的幾個結構,每個結構都有幾個字段,所以我希望能夠使用一個函數而不是每個結構的函數來完成。如果沒有簡單的方法,我可以爲每個結構創建一個函數。 – tjameson 2012-07-17 19:46:27
只是反思,它不像你想象的那麼昂貴 – thwd 2012-07-18 07:55:58