golang的json操作[转]
package main import ( "encoding/json" "fmt" "os" ) type ConfigStruct struct { Host string `json: "host" ` Port int `json: "port" ` AnalyticsFile string `json: "analytics_file" ` StaticFileVersion int `json: "static_file_version" ` StaticDir string `json: "static_dir" ` TemplatesDir string `json: "templates_dir" ` SerTcpSocketHost string `json: "serTcpSocketHost" ` SerTcpSocketPort int `json: "serTcpSocketPort" ` Fruits []string `json: "fruits" ` } type Other struct { SerTcpSocketHost string `json: "serTcpSocketHost" ` SerTcpSocketPort int `json: "serTcpSocketPort" ` Fruits []string `json: "fruits" ` } func main() { jsonStr := `{ "host" : "http://localhost:9090" , "port" : 9090, "analytics_file" : "" , "static_file_version" : 1, "static_dir" : "E:/Project/goTest/src/" , "templates_dir" : "E:/Project/goTest/src/templates/" , "serTcpSocketHost" : ":12340" , "serTcpSocketPort" : 12340, "fruits" : [ "apple" , "peach" ]}` //json str 转map var dat map[string]interface{} if err := json.Unmarshal([]byte(jsonStr), &dat); err == nil { fmt.Println( "==============json str 转map=======================" ) fmt.Println(dat) fmt.Println(dat[ "host" ]) } //json str 转struct var config ConfigStruct if err := json.Unmarshal([]byte(jsonStr), &config); err == nil { fmt.Println( "================json str 转struct==" ) fmt.Println(config) fmt.Println(config.Host) } //json str 转struct(部份字段) var part Other if err := json.Unmarshal([]byte(jsonStr), &part); err == nil { fmt.Println( "================json str 转struct==" ) fmt.Println(part) fmt.Println(part.SerTcpSocketPort) } //struct 到json str if b, err := json.Marshal(config); err == nil { fmt.Println( "================struct 到json str==" ) fmt.Println(string(b)) } //map 到json str fmt.Println( "================map 到json str=====================" ) enc := json.NewEncoder(os.Stdout) enc.Encode(dat) //array 到 json str arr := []string{ "hello" , "apple" , "python" , "golang" , "base" , "peach" , "pear" } lang, err := json.Marshal(arr) if err == nil { fmt.Println( "================array 到 json str==" ) fmt.Println(string(lang)) } //json 到 []string var wo []string if err := json.Unmarshal(lang, &wo); err == nil { fmt.Println( "================json 到 []string==" ) fmt.Println(wo) } } |
from:http://my.oschina.net/golang/blog/210012
golang的json操作[转]的更多相关文章
- golang的json操作
package main import ( "encoding/json" "fmt" "os" ) type ConfigStruct s ...
- 48 【golang】json的效率
本文将主要做如下几方面的测试: 1,构造一个[100]struct的数组,然后来测试它的json编码后的字符串 或者([]byte),首先关心它的功能是否正常: 2,在很早之前,我们在使用golang ...
- Golang 处理 Json(二):解码
golang 编码 json 还比较简单,而解析 json 则非常蛋疼.不像 PHP 一句 json_decode() 就能搞定.之前项目开发中,为了兼容不同客户端的需求,请求的 content-ty ...
- Golang的json包
encoding/json encoding/json是官方提供的标准json, 实现RFC 7159中定义的JSON编码和解码.使用的时候需要预定义struct,原理是通过reflection和in ...
- Golang解析json的几种方法
Golang解析json的几种方法 概要 使用Golang调用其它平台API接口时总会被多层的json串给恶心到,我记录一下自己解析json的几种方法. 一.自带的json包 func JsonUnm ...
- Json操作(DynamicJson)
Json的简介 JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式.它基于ECMAScript的一个子集. JSON采用完全独立于语言的文本格式,但是也使用了 ...
- ASP.NET 里的 JSON操作
最近项目中需要用到 JSON操作,google了一下 找到了几个比较好的操作方法.... 一 .使用 mircosoft 提供的 .NET Framework 自带的 json操作方法 1. 使用Ja ...
- Newtonsoft.Json 操作 JSON 字符串
Newtonsoft.Json介绍 在做开发的时候,很多数据交换都是以json格式传输的.而使用Json的时候,我们很多时候会涉及到几个序列化对象的使用:DataContractJsonSeriali ...
- Asp.Net Core 2.0 项目实战(8)Core下缓存操作、序列化操作、JSON操作等Helper集合类
本文目录 1. 前沿 2.CacheHelper基于Microsoft.Extensions.Caching.Memory封装 3.XmlHelper快速操作xml文档 4.Serializatio ...
随机推荐
- mysql 2003: Can't connect to MySQL server on '127.0.0.1:3306' (99)
连接断开的频率太高导致报错,可以在每次连接之间sleep,或者保持一个长连接. ref:https://stackoverflow.com/questions/24884438/2003-cant-c ...
- cobbler全自动批量安装部署linux
Cobbler的设计方式: Cobbler的配置结构基于一组注册的对象.每个对象表示一个与另一个实体相关联的实体(该对象指向另一个对象,或者另一个对象指向该对象).当一个对象指向另一个对象时,它就继承 ...
- sql查询分析器中显示行号
-- 工具-> -- 选项-> -- 文本编辑器-> -- 所有语言-> -- 常规-> -- 显示-> -- 行号
- Game2048
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...
- 吴裕雄 数据挖掘与分析案例实战(13)——GBDT模型的应用
# 导入第三方包import pandas as pdimport matplotlib.pyplot as plt # 读入数据default = pd.read_excel(r'F:\\pytho ...
- dubbo通信协议
对dubbo的协议的学习,可以知道目前主流RPC通信大概是什么情况,本文参考dubbo官方文档 http://dubbo.io/User+Guide-zh.htm dubbo共支持如下几种通信协议: ...
- Java集合set的并、交、差操作
集合的并.交.差操作 Set<Integer> result = new HashSet<Integer>(); Set<Integer> set1 = new H ...
- js 放在公共头部 子页面引用js 失效问题
先回忆一下二者的区别(对于此篇文章而言,二者在用法上没有区别) jsp:include是先编译一下included.jsp文件,然后再包含 先编译,后包含 @ include是先把文件包含就来,然后统 ...
- js string 字符串
mutil lines string 多行字符串, 由于多行字符串用\n写起来比较费事,所以最新的ES6标准新增了一种多行字符串的表示方法,用...表示,是单撇号, 不是单引号. 这是一个 多行 字符 ...
- 利用HBuilder打包前端开发webapp为apk
转载 标签: apk / 打包 / vue 现在的前端开发可谓是,百花齐放啦,什么都可以做,只有想不到没有做不到的,今天就简单的介绍用vue,ng或者是react开发的单页应用如何打包为apk,在移动 ...