Json协议

JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。它使得人们很容易的进行阅读和编写。同时也方便了机器进行解析和生成。它是基于 JavaScript Programming Language , Standard ECMA-262 3rd Edition - December 1999 的一个子集。 JSON采用完全独立于程序语言的文本格式,但是也使用了类C语言的习惯(包括C, C++, C#, Java, JavaScript, Perl, Python等)。这些特性使JSON成为理想的数据交换语言。

详细原文

Go与Json

  • 导入包:Import “encoding/json”
  • 序列化: json.Marshal(data interface{})
  • 反序列化: json.UnMarshal(data []byte, v interface{})

序列化例子

package main

import(
	"fmt"
	"encoding/json"
)

type User struct{
	UserName string `json:"userName"`
	NickName string `json:"nickName"`
	Age int `json:"age"`
	Birthday string
	Sex string
	Email string
	Phone string
}

// 测试根据Json协议打包自定的结构体
func testJson()  {
	
	// 自定结构
	user :=&User{
		UserName:"马化腾",	
		NickName:"老马",	
		Age:43, 
		Birthday:"2008/8/8",
		Sex:"男",
		Email:"马化腾@qq.com",
		Phone:"110",
	}

	// 打包
	data,err := json.Marshal(user)
	if err !=nil{
		fmt.Println("Json.Marshal failed,err:",err)
		return
	}

	fmt.Printf("%s\n",data)

}

// 测试根据Json协议打包Int
func testJsonInt()  {
	var age = 100

	// 打包
	data,err := json.Marshal(age)
	if err !=nil{
		fmt.Println("Json.Marshal failed,err:",err)
		return
	}

	fmt.Printf("%s\n",data)
}

// 测试根据Json协议打包Map
func testJsonMap()  {
	var m map[string]interface{}
	m = make(map[string]interface{})

	m["userName"] = "user1"
	m["age"] = 18
	m["sex"] = "man"


	data,err := json.Marshal(m)
	if err !=nil{
		fmt.Println("Json.Marshal failed,err:",err)
		return
	}

	fmt.Printf("%s\n",data)
}

// 测试根据Json协议打包Slice
func testJsonSlice()  {
	var m map[string]interface{}
	m = make(map[string]interface{})

	m["userName"] = "user1"
	m["age"] = 18
	m["sex"] = "man"

	var s []map[string]interface{}
	s = append(s,m)

	m["userName"] = "user2"
	m["age"] = 20
	m["sex"] = "woman"

	s = append(s,m)

	data,err := json.Marshal(s)
	if err !=nil{
		fmt.Println("Json.Marshal failed,err:",err)
		return
	}

	fmt.Printf("%s\n",data)
}

func main()  {
	// testJson()

	// testJsonInt()

	// testJsonMap()

	// testJsonSlice()
}

反序列化例子

  • json.Unmarshal([]byte(data), &user1)
package main

import(
	"fmt"
	"encoding/json"
)

type User struct{
	UserName string `json:"userName"`
	NickName string `json:"nickName"`
	Age int `json:"age"`
	Birthday string
	Sex string
	Email string
	Phone string
}

// 测试根据Json协议打包自定的结构体
func testJson()(ret string, err error)  {
	
	// 自定结构
	user :=&User{
		UserName:"马化腾",	
		NickName:"老马",	
		Age:43, 
		Birthday:"2008/8/8",
		Sex:"男",
		Email:"马化腾@qq.com",
		Phone:"110",
	}

	// 打包
	data,err := json.Marshal(user)
	if err !=nil{
		fmt.Println("Json.Marshal failed,err:",err)
		return
	}

	fmt.Printf("%s\n",data)

	ret = string(data)
	return
}

// 测试根据Json协议反序列化自定义结构
func testUnJsonStruct()  {
	data, err := testJson()
	if err != nil {
		fmt.Println("test struct failed, ", err)
		return
	}

	// 核心
	var user1 User
	err = json.Unmarshal([]byte(data), &user1)
	if err != nil {
		fmt.Println("Unmarshal failed, ", err)
		return
	}
	fmt.Println(user1)
}

func main()  {
	testUnJsonStruct()
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
TCP/IP 协议是网络通讯中最重要的协议之一,而 JSON(JavaScript Object Notation)是一种基于文本的轻量级数据交换格式,通常用于在客户端和服务器之间传输数据。 要在 TCP/IP 上发送 JSON 协议,首先需要建立一个 TCP 连接。TCP(传输控制协议)提供了可靠的、面向连接的数据传输服务。一旦 TCP 连接建立,数据可以通过该连接进行传输。 接下来,数据需要以 JSON 格式进行编码。JSON 是一种简洁和易于理解的数据表示语言,它由键值对构成,可以表示复杂的数据结构。在发送 JSON 数据之前,需要将要传输的数据按照 JSON 格式进行编码,一般使用编程语言中的 JSON 库来实现。编码后的 JSON 数据可以作为字符串发送。 将编码后的 JSON 数据传输到接收方时,发送方使用 TCP/IP 协议将数据包装成 IP 数据报,然后使用网络层的 IP 协议将数据报发送到接收方的 IP 地址。 接收方在接收到数据包后,使用 TCP/IP 协议将数据解析出来,并判断数据的有效性。然后,接收方使用相应的 JSON 解码库对数据进行解码,并将结果转换为可用的数据格式。 这样,通过 TCP/IP 协议可以可靠地发送 JSON 数据。由于 TCP/IP 协议提供了错误检测和重传机制,可以保证数据的完整性和可靠性。而 JSON 格式的数据则可以方便地进行解析和处理,适用于各种编程语言和应用场景,因此在网络通信中广泛使用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值