json数据转换成结构体

package main

import (
	"encoding/json"
	"fmt"
)

type IT1 struct {
	Company string `json:"company"`
	Subjects []string `json:"subjects"`
	IsOk bool  	`json:"isok"`
	Price float64 `json:"price"`
}

type IT2 struct {
	Company string `json:"company"`

}

func main(){
	jsonbuff :=`{
	"company": "zhczGO",
	"isok": true,
	"price": 99,
	"subjects": [
		"go",
		"fabric",
		"python",
		"Test"
	]
}`

var temp IT1
err :=json.Unmarshal([]byte(jsonbuff),&temp)
if err != nil{
	fmt.Println("err=",err)
	return
}
//fmt.Println("temp=",temp)
fmt.Printf("tmp=%+v\n",temp)

var temp2 IT2
err = json.Unmarshal([]byte(jsonbuff),&temp2)
if err != nil{
	fmt.Println("err=",err)
	return
}
fmt.Printf("tmp2=%+v\n",temp2)

}

  

package main

import (
	"encoding/json"
	"fmt"
)

func main()  {
	jsonbuff :=`{
	"company": "zhczGO",
	"isok": true,
	"price": 99,
	"subjects": [
		"go",
		"fabric",
		"python",
		"Test"
	]
}`

  //创建一个map
  m := make(map[string]interface{},4)
  err := json.Unmarshal([]byte(jsonbuff),&m) //一定要是地址

  if err != nil{
     fmt.Println("err=",err)
     return
  }
  fmt.Printf("m=%+v/n",m)

  //var str string
  //str = m["company"]//err 无法转换

  //类型断言
	for key,value := range m  {
		switch data := value.(type) {
		case string:
			//str = data
			fmt.Printf("map[%s]的值类型为string,value=%s\n",key,data)
		case bool:
			fmt.Printf("map[%s]的值类型为bool,value=%v\n",key,data)
		case float64:
			fmt.Printf("map[%s]的值类型为float64,value=%f\n",key,data)
		case []string:
			fmt.Printf("map[%s]的值类型为[]string,value=%v\n",key,data)
		case []interface{}:
			fmt.Printf("map[%s]的值类型为interface{},value=%v\n",key,data)
		}
	}

}

  

原文地址:https://www.cnblogs.com/dqh123/p/12076319.html

时间: 2024-07-30 09:02:08

json数据转换成结构体的相关文章

4.使用Jackson将Json数据转换成实体数据

Jar下载地址:http://jackson.codehaus.org/ 注意:类中的属性名称一定要和Json数据的属性名称一致(大小写敏感),类之间的嵌套关系也应该和Json数据的嵌套关系一致. 4.使用Jackson将Json数据转换成实体数据,布布扣,bubuko.com

参照protobuf,将json数据转换成二进制在网络中传输。

json数据格式在网络中传输需要的数据比二进制庞大太多,我们可以省去key,外加将数字不需要编码成字符串,直接二进制编码就OK. pack : 将json压包,unpack解包成json. var Struct = module.exports = {}; Struct.TYPE = { int8:1, int16:2, int32:3, uint8:4, uint16:5, uint32:7, string:8, object:9, aint8:10, aint16:11, aint32:12

利用JAVA反射机制将JSON数据转换成JAVA对象

net.sf.json.JSONObject为我们提供了toBean方法用来转换为JAVA对象, 功能更为强大,  这里借鉴采用JDK的反射机制, 作为简单的辅助工具使用,   有些数据类型需要进行转换, 根据需要进行扩展,  这里可以处理Long和Date类型. 只支持单个JSONObject对象的处理,   对于复杂的JSON对象, 如JSONArray数组, 可考虑先遍历, 获取JSONObject后再进行处理. package common; import java.lang.refle

go语音之进阶篇json解析到结构体

1.json解析到结构体 示例: package main import ( "encoding/json" "fmt" ) type IT struct { Company string `json:"company"` Subjects []string `json:"subjects"` //二次编码 IsOk bool `json:"isok"` Price float64 `json:"

62_json文件解析成结构体格式

package main import ( "encoding/json" "fmt") type People struct { //由于结构体生成json文本成员变量必须大写,可以使用struct_tag来二次编码,此时可以使用小写 Name string `json:"name"` Subject []string Isok bool `json:", string"` //转换成字符串类型输出 Price float6

将JSON数据转换成Java的实体类

思路:首先将JSON格式的数据转换成JSONObject,然后将JSONObject转换成Java的实体类(其中类属性包括List等类型) Java实体类: SearchFilter 类 1 public class SearchFilter { 2 private String groupOp; 3 4 private List<SearchRule> rules; 5 6 public String getGroupOp() { 7 return groupOp; 8 } 9 10 pub

数组强制转换成结构体指针,结构体内部指针的指向问题

如果直接操作结构体成员是不会取到不期望的值 但是对于要求连续数据格式的时候需要考虑对齐的问题 例如通讯中的数据帧格式等 ,如 ip数据包等#pragma   pack(1) struct   tagStruct {     ... } t; #pragma   pack() 的方式来强制连续存放 其中前面   pack(1)   是指对齐边界为   1 1.几个结构体例子: struct{short a1;short a2;short a3;}A; struct{long a1;short a2

Delphi 10.2 JSON与对象/结构体序列化性能提高100多倍

今天在盒子闲逛,无意中看到有人说XE7自带的Json对象序列化很慢,帖子在这里:http://bbs.2ccc.com/topic.asp?topicid=464378;经过测试的确如此.     但是 D10.2后,自带的 Json 做了优化,性能大大的提高了100多倍. 和其他json库对比了序列化和反序列化性能,JsonDataObjects 性能最好,但是只支持简单的对象,不支持结构体,QJson 则不支持动态数组,不支持 Attributes (RTTI),比如需要过滤某个字段,自带和

【转】参照protobuf,将json数据转换成二进制在网络中传输。

http://blog.csdn.net/gamesofsailing/article/details/38335753?utm_source=tuicool&utm_medium=referral json数据格式在网络中传输需要的数据比二进制庞大太多,我们可以省去key,外加将数字不需要编码成字符串,直接二进制编码就OK. pack : 将json压包,unpack解包成json. [javascript] view plain copy var Struct = module.export