跳到主要内容

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)
}