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数据是不会添加到结构体中去。

  • 相关阅读:
    监听器、过滤器
    最详细的Log4j使用教程
    Tomcat version 7.0 only supports J2EE 1.2, 1.3, 1.4, and Java EE 5 and 6 Web modules
    Unsupported major.minor version 52.0
    jdk安装
    数据库建表
    SpringMVC学习系列-后记 解决GET请求时中文乱码的问题
    面向对象中的常用魔术方法
    面向对象中的修饰关键词
    面向对象三大特性之二--【继承】
  • 原文地址:https://www.cnblogs.com/bananafish/p/11923448.html
Copyright © 2011-2022 走看看