在golang中,JSON和gob(一種與平臺無關的二進制格式)都是用來序列化和反序列化數據的常用格式。然而,它們有些微妙的差異,使用場景也有所不同。
// Gob type Person struct { Name string Age int } func main() { var person Person b := bytes.Buffer{} e := gob.NewEncoder(&b) e.Encode(Person{Name: "John Doe", Age: 25}) d := gob.NewDecoder(&b) d.Decode(&person) fmt.Printf("Name: %s, Age: %d\n", person.Name, person.Age) }
在上面的例子中,我們創建了一個Person結構體,然后使用gob序列化和反序列化它。我們首先將Person編碼為byte流,然后將byte流解碼為person對象。
// JSON type Person struct { Name string `json:"name"` Age int `json:"age"` } func main() { var person Person jsonStr := `{"name": "John Doe", "age": 25}` json.Unmarshal([]byte(jsonStr), &person) fmt.Printf("Name: %s, Age: %d\n", person.Name, person.Age) }
上面的例子中,我們定義了與gob示例中相同的結構體,但是在這里我們使用了json包將JSON解析為person對象。我們使用Unmarshal方法將JSON解碼為person對象。
總的來說,在多個平臺上共享數據時,gob是更好的選擇,因為它們使用的是二進制流,可以更有效地傳輸數據。而JSON則更適合用于通過HTTP(特別是RESTful Web Services)傳輸數據,因為它們可以在多個平臺上輕松地解析JSON,尤其是在JavaScript和iOS應用程序中。
上一篇c json保存數據類型
下一篇c json使用變量