JSON与对象互转
JSON字符串
1.json是个字符串
let json = '{"a":1,"b":2}'
logd(json)
//输出{a:1,b:2}
2.json不能直接取值
logd(json["a"])
//报错,或输出undefined
3.如果json想取值,要将json转为对象
let json = '{"a":1,"b":2}'
let obj = JSON.parse(json)
logd(obj.a)
//输出 1
对象Object
1.对象是js里的一种数据结构
let obj = {a: 1, b: 2}
logd(obj)
//输出[Object Object]
2.对象可以直接取值
logd(obj["a"])
logd(obj.a)
//输出 1
3.如果对象想调试输出整个内容,或者作为字符串传给某些函数作为变量,需要转为json
let obj = {a: 1, b: 2}
let json = JSON.stringify(obj)
logd(json)
//输出 {"a":1,"b":2}
带中括号的数组型处理
1.带中括号的数组型json
//这个是个数组型json,先解析,然后按照数组处理,通过下标取值,再对取值按照对象处理,通过key取值
let json = '[{"a":1},{"a":2}]'
let obj = JSON.parse(json)
for (let i = 0; i < obj.length; i++) {
logd(obj.a)
}
//1
//2
2.数组型对象
//这个是数组型对象,本身是个数组,而数组内元素由对象组成
let obj = [
{a: 1},
{a: 2}
]
//如果需要查看内容
for (let i = 0; i < obj.length; i++) {
logd(obj.a)
}
//如果需要整体打印内容
logd(obj)
//输出[Object Object]
logd(JSON.stringify(obj))
//[{"a":1},{"a":2}]
多层结构json处理
1.普通json,但json内含有数组
let json = '{"a":1,"b":[1,2,3]}'
//先对json进行解析成对象
let obj = JSON.parse(json)
//取出b
let ret_b = obj.b
//此时,ret_b是个数组,对ret_b进行打印
for (let i = 0; i < ret_b.length; i++) {
logd(ret_b)
}
2.普通json,但json内含有数组,且数组内又是个对象元素
let json = '{"a":1,"b":[{"a":1},{"a":2}]}'
//先对json进行解析成对象
let obj = JSON.parse(json)
//取出b
let ret_b = obj.b
//此时,ret_b是个数组,对ret_b进行打印
for (let i = 0; i < ret_b.length; i++) {
//打印当前下标的ret_b内容
logd(JSON.stringify(ret_b))
//通过下标取出ret_b每个数组元素,再通过key取值
logd(ret_b.a)
}
多层结构数组处理
1.对象内含有数组
let obj = {"a": 1, "b": [1, 2, 3]}
//直接打印obj
logd(obj)
//输出[Object Object]
//序列化一下再打印
logd(JSON.stringify(obj))
//{"a":1,"b":[1,2,3]}
//取出b
let ret_b = obj.b
//此时,ret_b是个数组,对ret_b进行打印
for (let i = 0; i < ret_b.length; i++) {
logd(ret_b)
}
2.对象内含有数组,且数组内又是个对象元素
let obj = {"a": 1, "b": [{"a": 1}, {"a": 2}]}
//直接打印obj
logd(obj)
//输出[Object Object]
//序列化 一下再打印
logd(JSON.stringify(obj))
//{"a":1,"b":[{"a":1},{"a":2}]}
//取出b
let ret_b = obj.b
//此时,ret_b是个数组,对ret_b进行打印
for (let i = 0; i < ret_b.length; i++) {
//打印当前下标的ret_b内容
logd(JSON.stringify(ret_b))
//通过下标取出ret_b每个数组元素,再通过key取值
logd(ret_b.a)
}