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('\n')
		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數據是不會添加到結構體中去。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM