首先说,json。json的读取,序列化成对象以及反序列化回去都比较简单。
json:
首先看一下json的结构。
这个json名称是 host.json
{
"version": "1212",
"config": {
"httpqps": 3,
"weight": 4
}
}
然后是代码:
这个文件的名称是analysisjson.go
package main
import (
"fmt"
"io/ioutil"
)
import "encoding/json"
type Config struct {
Httpqps int
Weight int
}
type Result struct {
Version string
Config Config
}
func main() {
// json序列化成变成对象文件-----------------------------------------------------begin
bytes, err := ioutil.ReadFile("host.json")
var r Result
err = json.Unmarshal([]byte(bytes), &r)
if err != nil {
fmt.Printf("err was %v", err)
}
fmt.Println(r.Version)
fmt.Println(r.Config.Weight)
// json序列化成变成对象文件-----------------------------------------------------end
// 对象反序列成json文件---------------------------------------------------------begin
var c Config
var msg Result
c.Httpqps = r.Config.Httpqps
c.Weight = r.Config.Weight
msg.Version = r.Version
msg.Config = c
b, er := json.Marshal(msg)
if er == nil {
fmt.Println(string(b))
}
// 对象反序列成json文件---------------------------------------------------------end
}
解析的结果是:
1212
4
{"Version":"1212","Config":{"Httpqps":3,"Weight":4}}
复杂的json文件的话,类比一下也能出来。
重点:如果你不想麻烦,那么把这两个文件放在src目录下,直接运行即可,一定要注意这个路径的问题,很重要,很重要,很重要,往往就是你代码写的没问题,你的路径出错了,导致你手忙脚乱的。
ini格式的文件:
以conf为后缀名的文件,就是ini这个格式的文件
配置文件:
名称是database.conf
[mysql]
username=root
password=123456
url=127.0.0.1:3306
[redis]
address=127.0.0.1:6379
代码:
名称是
conf_load_main.go
注意了,这里需要引入一个包。你去搜一下gopkg.in/gcfg.v1,你可以通过go get或者用git clone把这个第三方包引进来,然后,放在你的GOPATH路径下的src下新建一个文件夹github.com,放在下边然后引入时像我这样引入即可,就是你安装go时的设置的工作路径。如果你出现了问题,那就是你问题,好好操作一番。还有一点注意提前在你的c盘建一个以database.conf命名的文件。
package main
import (
"fmt"
"gopkg.in/gcfg.v1"
"io/ioutil"
"os"
)
type Mysql struct {
Username string
Password string
Url string
}
type Redis struct {
Address string
}
type Test struct {
Mysql Mysql
Redis Redis
}
func main() {
var test Test
var err error
// read config from file
err = gcfg.ReadFileInto(&test, "database.conf")
if err != nil {
fmt.Println("cuowu")
}
fmt.Println(test.Mysql)
// 这部分是把对象反解析成ini文件
// bytes, err := ioutil.ReadFile("kimny.conf")
fn := "C:\\database.conf"
str := "[mysql]" +"\n"+ "username="+ test.Mysql.Username + "\n" + "password="+test.Mysql.Password+"\n"+"url="+test.Mysql.Url+"\n"+"[redis]"+"\n"+"address="+test.Redis.Address
s := []byte(str)
// os.ModeAppend
ioutil.WriteFile(fn, s, os.ModeAppend)
rf, _ := ioutil.ReadFile(fn)
fmt.Printf("%s", rf)
}
结果:
{root 123456 127.0.0.1:3306}
[mysql]
username=root
password=123456
url=127.0.0.1:3306
[redis]
address=127.0.0.1:6379