Go格式化输出

2023-05-16

1、GO数据类型转化为JSON类型

函数原型:

func Unmarshal(data []byte, v interface{}) err

GO数据类型输出为JSON类型示例

package main

import (
	"encoding/json"
	"fmt"
)

type Test struct{
	Name string
	Age  int
	Phone string
	Addres string
}

func main()  {
	var name  = "xiaoming"
	var age = 13
	var phone = "23243234"
	var add = "beijing"
	t := &Test{name,age,phone,add}
	b, err := json.Marshal(t)
	if err != nil {
		fmt.Println("Marshal fail")
	}
	fmt.Println(b)
	fmt.Println(string(b))
}

2、JSON类型转化为GO数据类型

函数原型:

func Marshal(v interface{})([]byte, error)

JSON类型输出为Go数据类型示例

package main

import (
	"encoding/json"
	"fmt"
)

func main ( ) {
	var jsonBlob = [ ] byte ( ` [ 
        { "Name" : "Platypus" , "Order" : "Monotremata" } , 
        { "Name" : "Quoll" ,     "Order" : "Dasyuromorphia" } 
    ] ` )
	type Animal struct {
		Name  string
		Order string
	}
	var animals [ ] Animal
	err := json. Unmarshal ( jsonBlob , & animals )
	if err != nil {
		fmt. Println ( "error:" , err )
	}
	fmt. Println( animals )
}

结构体字段标签

json包在解析结构体时,如果遇到key为json的字段标签,则会按照一定的规则解析该标签:第一个出现的是字段在JSON串中使用的名字,之后为其它选项,指定的空值字段不出现在JSON中,如果整个value为"-",则不解析该字段,例如见上述结构体修改为如下:

type Test struct{
	Name string		`json:"name,omitempty"`
	Age  int		`json:"age"`
	Phone string        `json:"-"`
	Address string        `json:"add"`
}


func main()  {
	var name  = "xiaoming"
	var age = 13
	var phone = "23243234"
	var add = "beijing"
	t := &Test{name,age,phone,add}
	b, err := json.Marshal(t)
	if err != nil {
		fmt.Println("Marshal fail")
	}
	fmt.Println(b)
	fmt.Println(string(b))
}

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Go格式化输出 的相关文章

  • 问答QA(一)综述

    声明 xff1a 本文是综合网上问答系统介绍 xff0c 做的总结 xff0c 如有侵权 xff0c 请联系处理 xff0c 谢谢 一 问答系统架构 1 1 问题分析模块 负责对用户的提问进行处理 xff1b 生成查询关键词 xff08 提
  • 【程序员面试宝典】栈和队列相关面试题

    1 集合栈 题目描述 xff1a 请实现一种数据结构SetOfStacks xff0c 由多个栈组成 xff0c 其中每个栈的大小为size xff0c 当前一个栈填满时 xff0c 新建一个栈 该数据结构应支持与普通栈相同的push和po
  • 【程序员面试宝典】栈的应用

    1 下一个较大元素 现在我们有一个int数组 xff0c 请你找出数组中每个元素的下一个比它大的元素 给定一个int数组A及数组的大小n xff0c 请返回一个int数组 xff0c 代表每个元素比他大的下一个元素 若不存在则为 1 保证数
  • time_wait与面试的暧昧

    背景知识 TCP三次握手与四次挥手 http blog csdn net double happiness article details 70160738 time wait是什么 xff1f 通过上面三次握手和四次挥手的学习 xff0c
  • 【通信方式五】socket编程之TCP通信

    1 网络字节序 网络字节序就是熟知的关于大小端的问题 xff0c 关于前面的大小端的判断方法 xff0c 以及代码实现再此就不在赘述 xff0c 下面只谈网络中的字节序问题 xff08 如何判定当前机器的大小端 xff1a http blo
  • 【通信方式六】socket编程之UDP通信

    相关博客 通信方式五 socket编程之TCP http blog csdn net double happiness article details 74938008 由于TCP协议是可靠的面向连接的协议 xff0c 因此在服务器端需要执
  • shell下的第一个编程(不一样的1到100累加)

    相信对于一个程序 猿 来说 xff0c 除了我们入门的 hello world 之外 xff0c 最简单的代码就是只有从1累加到100这样简单的程序吧 xff0c 没错这样的程序在现在来看或许根本不如我们的法眼 xff0c 那么问题来了 x
  • 【每日一题-1】有序链表合并与累加和问题

    基础题 合并两个有序链表 xff0c 合并以后的链表依旧有序 思路 xff1a xff08 1 xff09 特殊情况处理 xff1a 若两个链表都为则返回空 xff0c 若其中一个链表为空返回另外一个链表的头结点 xff1b xff08 2
  • 【每日一题-2】链表基础面试题

    1 查找链表的倒数第k个节点 span style font family none font size 12px ListNode FindKthToTail ListNode pListHead unsigned int k if pL
  • 【每日一题-3】链表带环问题

    判断链表是否带环 xff1f 如果带环 xff0c 环的长度是多少 xff1f 环的入口节点是什么 xff1f span style font family none font size 12px struct ListNode int v
  • Linux更改镜像源

    https mirrors tuna tsinghua edu cn span class token comment 清华大学镜像源 span span class token comment 1 搜索Ubuntu span span c
  • 【每日一题-5】复杂链表的复制

    逆序打印单链表 span style font family none font size 12px void ReversePrintList listNode pHead if pHead 61 61 NULL return NULL
  • 【每日一题-6】栈和队列与替换空格

    两个栈实现一队列 span style font family none font size 12px class Queue void Push int data inStack push data int Pop if inStack
  • HTTP协议详解(真的很牛逼)

    引言 HTTP是一个属于应用层的面向对象的协议 xff0c 由于其简捷 快速的方式 xff0c 适用于分布式超媒体信息系统 它于1990年提出 xff0c 经过几年的使用与发展 xff0c 得到不断地完善和扩展 目前在WWW中使用的是HTT
  • shell下的命令代替

    命令替换是指Shell 执行命令并将命令替换部分替换为执行该命令后的结果 shell下的命令代替为 34 96 96 xff08 反引号 xff09 34 和 34 34 使用单反引号的替换方式 执行结果 替换成 的方式 执行结果 两种命令
  • getopt函数簇

    xff08 一 xff09 在Linux中 xff0c 用命令行执行可执行文件时可能会涉及到给其加入不同的参数的问题 xff0c 例如 xff1a a out a1234 b432 c d 程序会根据读取的参数执行相应的操作 xff0c 在

随机推荐