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语言官方文档

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值