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)
		}
	}

	
}

  

nlohmann::json是一个C++库,用于处理JSON数据。它提供了一种简单易用的方式来处理JSON数据,包括将JSON换为C++结构体。 要将JSON换为结构体,您需要使用nlohmann::json库中的`json_converter`工具类。这个工具类提供了一个将JSON字符串换为结构体的函数,可以按照以下步骤进行操作: 1. 首先,您需要包含nlohmann::json库的头文件: ```cpp #include <nlohmann/json.hpp> ``` 2. 创建一个C++结构体,用于存储JSON数据。这个结构体应该具有与JSON数据相对应的字段和类型。 3. 使用`json_converter`工具类中的`from_json()`函数将JSON字符串换为结构体实例。该函数需要传递结构体的类型作为参数,以及JSON字符串的指针和长度。 下面是一个简单的示例代码,展示了如何使用nlohmann::jsonJSON换为结构体: ```cpp #include <nlohmann/json.hpp> #include <string> #include <iostream> // 定义一个C++结构体,用于存储JSON数据 struct Person { std::string name; int age; std::string address; }; int main() { // 创建一个JSON字符串 std::string jsonString = "{\"name\":\"John\",\"age\":30,\"address\":\"123 Main St.\"}"; // 将JSON字符串换为结构体实例 Person person; json_converter::from_json(jsonString, person); // 输出结构体中的数据 std::cout << "Name: " << person.name << std::endl; std::cout << "Age: " << person.age << std::endl; std::cout << "Address: " << person.address << std::endl; return 0; } ``` 在上面的示例中,我们首先创建了一个包含JSON数据的字符串`jsonString`。然后,我们使用`json_converter::from_json()`函数将该字符串换为`Person`结构体的实例。最后,我们输出了结构体中的数据。 请注意,为了使用nlohmann::json库,您需要将其作为第三方库进行安装和配置。具体的安装和配置方法可能因您的开发环境和操作系统而有所不同。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值