Golang(9)File Management

Golang(9)File Management

7.1 XML
import (
“encoding/xml”
“fmt”
“io/IoUtil”
“os"
)

xml.Unmarshal(data []byte,v inteface{}) error
xml.Marshal(v interface{}) ([]byte,error)
xml.MarshalIndent(v interface{},prefix,indent string) ([]byte,error)

7.2 JSON Handling
JSON(Javascript Object Notation)

Here is the sample JSON string
{“servers”:[{“serverName”:”Shanghai_VPN”,“serverIP”:”127.0.0.1”},{“serverName”:”Beijing_VPN”,”serverIP”:”127.0.0.2"}]}

Parse JSON
func Unmarshal(data []byte,v interface{}) error

Here is the example how to use this function.
package main

import (
"encoding/json"
"fmt"
)

type Server struct {
ServerName string
ServerIP string
}

type Serverslice struct {
Servers []Server
}

func main() {
var s Serverslice
str := `{"servers":[{"serverName":"Shanghai_VPN","serverIP":"127.0.0.1"},{"serverName":"Beijing_VPN","serverIP":"127.0.0.2"}]}`
json.Unmarshal([]byte(str),&s)
fmt.Println(s)
fmt.Println(s.Servers[0])
fmt.Println(s.Servers[0].ServerIP)
}

Remember to capital the first property name.

bool <——>JSON booleans
float64 <———>JSON numbers
string <————>JSON strings
nil <————> JSON null

We can use bitly simplejson to parse the unkNown format JSON string.
https://github.com/bitly/go-simplejson

>go get github.com/bitly/go-simplejson

package main

import (
"fmt"
"github.com/bitly/go-simplejson"
)

func main() {
js,_ := simplejson.NewJson([]byte(`{
"test": {
"array": [1,2,3],
"int": 10,
"float": 5.150,
"bignum": 9223372036854775807,
"string": "simplejson",
"bool": true
}
}`))

arr,_ := js.Get("test").Get("array").Array()
i,_ := js.Get("test").Get("int").Int()
ms := js.Get("test").Get("string").MustString()

fmt.Println(arr)
fmt.Println(i)
fmt.Println(ms)
}

The console output is as follow:
>go run src/com/sillycat/easygoapp/main.go
[1 2 3] 10 simplejson

Generate JSON
func Marshal(v interface{}) ([]byte,error)

package main

import (
"encoding/json"
"fmt"
)

type Server struct {
ServerName string
ServerIP string
}

type Serverslice struct {
Servers []Server
}

func main() {
var s Serverslice
s.Servers = append(s.Servers,Server{ServerName: "Shanghai_VPN",ServerIP: "127.0.0.1"})
s.Servers = append(s.Servers,Server{ServerName: "Beijing_VPN",ServerIP: "127.0.0.2"})
b,err := json.Marshal(s)
if err != nil {
fmt.Println("json err:",err)
}
fmt.Println(string(b))
}

The console output should be as follow:
{"Servers":[{"ServerName":"Shanghai_VPN","ServerIP":"127.0.0.1"},{"ServerName":"Beijing_VPN","ServerIP":"127.0.0.2"}]}

7.3 Regex
https://github.com/astaxie/build-web-application-with-golang/blob/master/ebook/07.3.md

7.4 Template
https://github.com/astaxie/build-web-application-with-golang/blob/master/ebook/07.4.md

7.5 File Operation
https://github.com/astaxie/build-web-application-with-golang/blob/master/ebook/07.5.md

7.6 String Operation
https://github.com/astaxie/build-web-application-with-golang/blob/master/ebook/07.6.md



References:
https://github.com/astaxie/build-web-application-with-golang/blob/master/ebook/07.0.md

相关文章

什么是Go的接口? 接口可以说是一种类型,可以粗略的理解为他...
1、Golang指针 在介绍Golang指针隐式间接引用前,先简单说下...
1、概述 1.1&#160;Protocol buffers定义 Protocol buffe...
判断文件是否存在,需要用到"os"包中的两个函数: os.Stat(...
1、编译环境 OS :Loongnix-Server Linux release 8.3 CPU指...
1、概述 Golang是一种强类型语言,虽然在代码中经常看到i:=1...