json與xml的區別,以及二者之間的轉化[二]

在上一篇文章中https://blog.csdn.net/zhanghuaichao/article/details/103443937介紹了json,現在進行下實踐,在go下進行序列化和反序列化,直接看下代碼

package main

import (
	"encoding/json"
	"fmt"
)
//現在需要將一個json數據反序列化爲一個數據結構
/*
{"cars":[{"company":"德國大衆","name":"奧迪","price":"1600"},
{"company":"美國通用汽車","name":"雪弗蘭","price":"1800"}]
}
要先定義一個這樣的結構然後進行反序列化,我們測試的步驟是先定義一個數據結構,看看能否序列化
成我們想要的結構,驗證下後再反序列話
*/
type car struct {
	Company string  `json:"company"`
	Name string     `json:"name"`
	Price string	`json:"price"`
}


type cars struct {
	Cartest [2]car `json:"cars"`
}

func main() {


	group := cars{
		Cartest: [2]car{{"德國大衆", "奧迪", "1600"}, {"美國通用汽車", "雪弗蘭", "1800"}},
	}
	bb, errr := json.Marshal(group)
	if errr != nil {
		fmt.Println("error:", errr)
	}
	fmt.Println(string(bb))

	//現在開始演示反序列化,
	var strtest string="{\"cars\":[{\"company\":\"德國大衆\",\"name\":\"奧迪\",\"price\":\"1600\"},{\"company\":\"美國通用汽車\",\"name\":\"雪弗蘭\",\"price\":\"1800\"}]}"
	fmt.Printf("%s\n",strtest)
	var zhang []byte=[]byte(strtest)
	var jiegou cars;
	err1:=json.Unmarshal(zhang,&jiegou)
	if err1 !=nil{

		fmt.Println("unmarshal failed!!!")
		return
	}
	fmt.Println(jiegou)
	fmt.Printf("%s,%s,%s,%s,%s,%s",jiegou.Cartest[0].Name,jiegou.Cartest[0].Company,jiegou.Cartest[0].Price,jiegou.Cartest[1].Name,jiegou.Cartest[1].Company,jiegou.Cartest[1].Price)

	}

代碼的輸出爲

{"cars":[{"company":"德國大衆","name":"奧迪","price":"1600"},{"company":"美國通用汽車","name":"雪弗蘭","price":"1800"}]}
{"cars":[{"company":"德國大衆","name":"奧迪","price":"1600"},{"company":"美國通用汽車","name":"雪弗蘭","price":"1800"}]}
{[{德國大衆 奧迪 1600} {美國通用汽車 雪弗蘭 1800}]}
奧迪,德國大衆,1600,雪弗蘭,美國通用汽車,1800

裏面的函數不具體解釋了,大家想了解具體函數的作用參考  https://studygolang.com/pkgdoc go語言官方文檔

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章