zoukankan      html  css  js  c++  java
  • golang学习----JSON文件操作

    golang操作JSON文件

    JSON 做为一种重要的数据格式,在如今的web开发中越来越重要。 在golang中我们可以使用json包中的方法来操作json格式的文件。

    生成JSON数据

    	json := make(map[string]interface{})
    	json["name"] = "foo"
    	json["title"] = "bar"
    	json["content"] = map[string]interface{}{
    		"first": "one",
    		"second": "two",
    	}
    	//	缩进json(格式化)
    	//	若使用Marshal则不会格式化,这样不方便阅读
    	bytes, err := json.MarshalIndent(json, "", " ")
    	if err != nil{
    		log.Println("ERROR:",err)
    	}
    	fmt.Println(string(bytes))
    

    读取JSON数据

    这里我们使用从文件中获取的JSON

    //	读取文件中的数据
    func readJson(filePath string) (result string){
    	file, err := os.Open(filePath)
    	defer file.Close()
    	if err != nil {
    		fmt.Println("ERROR:", err)
    	}
    	buf := bufio.NewReader(file)
    	for {
    		s, err := buf.ReadString('
    ')
    		result += s
    		if err != nil {
    			if err == io.EOF{
    				fmt.Println("Read is ok")
    				break
    			}else{
    				fmt.Println("ERROR:", err)
    				return
    			}
    		}
    	}
    	return result
    }
    
    
    func main() {
    	var data struct{
    		Id int
    		Customerld int
    		Raised string
    		Due string
    		Paid bool
    		Note string
    		Items []struct{
    			Id string
    			Price float64
    			Quantity int
    			Note string
    		}
    	}
    	result := readJson("F:\GolangProject\io\file_option\json\json.json")
    	err := json.Unmarshal([]byte(result), &data)
    	if err != nil {
    		fmt.Println("ERROR:",err)
    	}
    	fmt.Println(data)
    }
    

    PS:以上注意构造的对象的参数首字母必须大写,否则JSON数据是不会添加到结构体中去。

  • 相关阅读:
    安卓API首页
    安卓开发学习1
    Unity3D安卓交互
    跨天查询,少一天的问题
    COALESCE关键字的使用
    Map构造器模式 map builder pattern
    Linux服务器端使用tcpdump抓redis报文
    Java Unsigned Bytes
    JAVA与c#中byte取值范围的差异
    jack反序列化自定义字段绑定,报错:can only instantiate non-static inner class by using default, no-argument constructor
  • 原文地址:https://www.cnblogs.com/bananafish/p/11923448.html
Copyright © 2011-2022 走看看