go语言 怎么处理json里面的数组

Python018

go语言 怎么处理json里面的数组,第1张

需要写一个方法,把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

}

完整的一条json语句中,字段都为字符串类型,值为基本数据类型:整形、布尔型、字符串等

在解析json时,通常要用到encoding/json这个包

json.Unmarshal()方法用作将一个json类型的字节流,序列化成指定的形式,可以为map,也可以为自定义的结构体,需要注意的是,希望被转换的格式需要以指针类型传入

运行结果如下

将map或者struct打包成json,用的是json中的marshal方法,返回的是一个字节数组和一个错误类型

打印结果

json是一种经常使用的数据格式,下面总结一下json的使用

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"

注意:

正确使用第一个,第二个回报错