golang json string转结构体

代码示例评论阅读3分58秒

要求:

1. 程序应能够接收一个JSON字符串作为输入。文章源自Golang编程指南-https://www.va26.com/work/423.html

2. 程序应能够将JSON字符串转换为结构体,结构体应包含与JSON字符串中相同的字段。文章源自Golang编程指南-https://www.va26.com/work/423.html

3. 程序应能够处理JSON字符串中的特殊字符和转义字符。文章源自Golang编程指南-https://www.va26.com/work/423.html

4. 程序应具有良好的可读性和可维护性,注释清晰,代码结构合理。文章源自Golang编程指南-https://www.va26.com/work/423.html

JSON字符串文章源自Golang编程指南-https://www.va26.com/work/423.html

本程序定义了一个名为User的结构体,包含名字、年龄和地址三个字段,以对应JSON数据。在main函数中,给定了一个含有转义字符的JSON字符串,通过json.Unmarshal函数成功将其解析到User结构体实例中,并打印出解析后的用户信息。此程序展示了Go语言中JSON到结构体转换的基本过程,具备处理特殊字符的能力,且代码清晰、可读性强。文章源自Golang编程指南-https://www.va26.com/work/423.html

package main  
  
import (  
	"encoding/json"  
	"fmt"  
	"log"  
)  
  
// User 结构体对应于将要解析的JSON数据  
type User struct {  
	Name    string `json:"name"`  
	Age     int    `json:"age"`  
	Address string `json:"address"`  
}  
  
func main() {  
	// JSON字符串,包含特殊字符和转义字符  
	jsonString := `{"name": "John \"Doe\"", "age": 30, "address": "123 Main St., New York, NY"}`  
  
	// 声明一个User类型的变量  
	var user User  
  
	// 使用json.Unmarshal函数将JSON字符串解析到结构体  
	err := json.Unmarshal([]byte(jsonString), &user)  
	if err != nil {  
		log.Fatalf("JSON unmarshalling failed: %s", err)  
	}  
  
	// 打印解析后的结构体  
	fmt.Printf("Name: %s\n", user.Name)  
	fmt.Printf("Age: %d\n", user.Age)  
	fmt.Printf("Address: %s\n", user.Address)  
}

这个程序定义了一个User结构体,该结构体有三个字段:NameAgeAddress。这些字段的名称和类型对应于JSON字符串中的键和值。结构体字段上方的json:"..."标签用于指示JSON中对应的键名。文章源自Golang编程指南-https://www.va26.com/work/423.html

main函数中,我们定义了一个JSON字符串jsonString,它包含了一个名字(其中有一个转义的双引号字符)、年龄和地址。然后,我们声明了一个User类型的变量user,并使用json.Unmarshal函数将JSON字符串解析到该结构体中。文章源自Golang编程指南-https://www.va26.com/work/423.html

如果解析过程中发生错误,程序将记录错误并退出。如果解析成功,程序将打印出解析后的结构体信息。文章源自Golang编程指南-https://www.va26.com/work/423.html

这个程序是简化的示例,用于演示JSON到结构体的转换。在实际应用中,可能需要根据具体的JSON结构调整结构体定义,并处理更复杂的JSON结构和错误情况。文章源自Golang编程指南-https://www.va26.com/work/423.html

 
  • 本文由golang编程指南作者原创,请勿恶意转载!
  • 转载请务必保留本文链接:https://www.va26.com/work/423.html
匿名

发表评论

匿名网友
:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:
确定

拖动滑块以完成验证