json与struct转换的话struct的属性必须首字母大写。
当用的多了就会发现一个致命的问题:go默认会将特殊字符转义采用以下方法可以解决:
处理方法1
处理方法2
不管是属性组成的还是Tag组成的json字符串,都可以正常的解析
tag:
json:"-" // 表示不进行序列化
IsOnSale bool json:"is_on_sale,string" //序列化后转成string
ProductID int64json:"product_id,omitempty" //为零值时忽略
序列化或者反序列化时可以指定类型,支持string,number和boolean
IsOnSale bool json:"is_on_sale,string"
注意:
正确使用第一个,第二个回报错
本文主要介绍了Go语言中文件读写的相关操作。
文件是什么?
计算机中的文件是存储在外部介质(通常是磁盘)上的数据集合,文件分为文本文件和二进制文件。
os.Open() 函数能够打开一个文件,返回一个 *File 和一个 err 。对得到的文件实例调用 close() 方法能够关闭文件。
为了防止文件忘记关闭,我们通常使用defer注册文件关闭语句。
Read方法定义如下:
它接收一个字节切片,返回读取的字节数和可能的具体错误,读到文件末尾时会返回 0 和 io.EOF 。 举个例子:
使用for循环读取文件中的所有数据。
bufio是在file的基础上封装了一层API,支持更多的功能。
io/ioutil 包的 ReadFile 方法能够读取完整的文件,只需要将文件名作为参数传入。
os.OpenFile() 函数能够以指定模式打开文件,从而实现文件写入相关功能。
其中:
name :要打开的文件名 flag :打开文件的模式。 模式有以下几种:
perm :文件权限,一个八进制数。r(读)04,w(写)02,x(执行)01。
需要写一个方法,把json数据转换成list集合数据public static List jsonToBean(String data, Object bean) {
List list = new ArrayList()
try {
JSONArray array
try {
array = new JSONArray(data)
for (int i = 0i <array.length()i++) {
Object toBean = getBean(bean)
JSONObject ob = new JSONObject()
ob = (JSONObject) array.get(i)
toBean = jsonStrToBean(ob, toBean)
list.add(toBean)
}
return list
} catch (JSONException e) {
try {
Object obj = null
JSONObject jsonObj = new JSONObject(data)
Object toBean = getBean(bean)
toBean = jsonStrToBean(jsonObj, toBean)
list.add(toBean)
return list
} catch (JSONException e1) {
log.error("Error covert String to JSONObject", e)
e1.printStackTrace()
}
e.printStackTrace()
log.error("Error covert String to JSONArray", e)
}
} catch (SecurityException e) {
e.printStackTrace()
}
return list
}