循环通过复杂的JSON对象
Loop through complex JSON object
我有一个非常复杂的json对象,我需要按原样写出所有属性和键。我有一个概念,就是无法执行。
如果对象有对象,需要不断调用函数等等。不过我遇到了一些问题,有些键没有输出,有些值被分解为
0:h 1:t 2:t 3:p 4: 5:/ 6:/ etc....
name:Travel
scheme:
label:
我想我的代码中有一个小错误需要更改。
ObjectValues = function(obj){
for(var j in obj){
if(typeof(obj[j]) == "object"){
for(var k in obj[j]){
ObjectValues(obj[j][k]);
}
} else {
console.log(j + ":" + obj[j]);
}
}
_
{
"title": "Norway Tourism: Wildlife and Nature",
"author": "",
"categories": [
{
"name": "Travel",
"scheme": "",
"label": ""
}
],
"countries": [
],
"content": [
{
"thumbnails": [
{
"audioChannels": 0,
"audioSampleRate": 0,
"bitrate": 0,
"checksums": {
"md5": "7089E4E044069AE7702DEC686"
}
}
]
}
]
}
ObjectValues = function(v, k){
if (typeof v == "object") {
for (var kp in v) {
if (Object.hasOwnProperty.call(v, kp)) {
ObjectValues(v[kp], k != undefined ? k + "." + kp : kp);
}
}
} else {
console.log(k + ":" + v);
}
};
即使对于不是对象的JSON值也应该有效。它将适用于
ObjectValues(JSON.parse("0"));
这将不会由原始字符串处理,并且如果执行ObjectValues("http://...")
,它也不会迭代顶级字符串中的字符。
使用:
ObjectValues = function(obj) {
var isArray = obj instanceof Array;
for (var j in obj) {
if (obj.hasOwnProperty(j)) {
if (typeof(obj[j]) == "object") {
if(!isArray)
{
console.log(j + ":");
}
ObjectValues(obj[j]);
} else if(!isArray) {
console.log(j + ":" + obj[j]);
}
}
}
}
注意已删除的循环。按照你拆分的方式,你会丢失k
的名称。
您还应该使用hasOwnProperty来避免序列化不需要的密钥。
如果该值是一个对象,那么您仍然希望序列化该键(例如,您不希望丢失{foo: {} }
的foo(。
最后,我不得不做一个数组检查,因为数组是对象,我们确实想输出嵌套在数组中的键,但我们不想输出数组索引本身。
在jsFiddle上演示。
不能说这是唯一的问题,但countries数组后面缺少一个逗号。
此外,对于像"类别"(和其他(这样的分段,你确定它需要用方括号包裹吗?在JS中,这是一个数组。所以我相信你是说你有一个数组,但在这种情况下,这个数组的唯一成员是一个对象。
因为您的问题有一个jquery标签:
我个人将jquery.dump插件用于此类目的。
相关文章:
- jQuery匹配JSON对象的部分文本
- 如何在Javascript中将JSon对象转换为数组
- 我可以在json对象中添加一个函数吗
- 使用JS将数组转换为json对象
- 如何为json对象中的段发送array[]
- 将JSON对象传递给angular指令
- 更改JSON对象的结构
- 访问JSON对象内部的数组元素
- 在ejs-partial中对JSON对象进行迭代
- 遍历 JSON 对象并检查 URL 是否以某个值结尾
- 访问嵌套JSON对象的键,其中键是动态的
- json对象中缺少对象循环
- 发送json对象或使用express路由呈现视图
- 在play2框架中向json对象添加下拉列表项
- 元素名称上带有短划线 (-) 字符的 Json 对象
- autocomplete不接受源的json对象
- 如何在javascript中创建动态json对象
- 在使用客户端脚本时拾取JSON对象
- 如何通过json对象数组为嵌套对象赋值
- 构造JSON对象