【问题标题】:Javascript: how to get nested JSONJavascript:如何获取嵌套的 JSON
【发布时间】:2015-07-20 12:47:11
【问题描述】:
{
"category": [
    {
        "category_id": "1",
        "category_name": "Editor's Choice ",
        "cover_url": "http://www.example.com"
    },
    {
        "category_id": "2",
        "category_name": "New Releases",
        "cover_url": "http://www.example.com"
    }
],
"success": 1

}

问题是我正在用 nodejs 从我当地的电影院网站上抓取一个 html 页面,我有 3 个数组(ar1、ar2、ar3),它们包含从现在到接下来三天编程的电影标题。

我正在使用这种方式来获取json(这只是一天),这是函数的“心脏”,我在其中生成将被触发的数组:

            var len = titolo1.length;
            while(j!=len){
                obj1={titolo:titolo1[j],locandina:film1[j]};
                js[j]=obj1;
                j++;
            } 

然后在服务器代码的其他点(功能失效!)我做 res.send(JSON.stringify(js, null, 4))

结果如下:

[
{
    "titolo": " The Gunman ",
    "locandina": "http://www.metropoliscinemas.it/wp-content/uploads/RIBqwqVPwUp6VIWeRZlS-150x214.jpg"
},
{
    "titolo": " Doraemon il film ",
    "locandina": "http://www.metropoliscinemas.it/wp-content/uploads/doraemon-il-film-le-avventure-di-nobita-e-dei-cinque-esploratori_notizia-2-150x214.jpg"
},
{
    "titolo": " Child 44 – Il bambino numero 44 ",
    "locandina": "http://www.metropoliscinemas.it/wp-content/uploads/Child-44-trailer-italiano-e-locandina-del-thriller-con-Gary-Oldman-e-Tom-Hardy-2-150x214.jpg"
},
{
    "titolo": " Run All Night – Una notte per sopravvivere ",
    "locandina": "http://www.metropoliscinemas.it/wp-content/uploads/locandina2-150x214.jpg"
},
{
    "titolo": " Ritorno al Marigold Hotel ",
    "locandina": "http://www.metropoliscinemas.it/wp-content/uploads/36366-150x214.jpg"
},
{
    "titolo": " I 7 nani ",
    "locandina": "http://www.metropoliscinemas.it/wp-content/uploads/xHIrTDXTLZF1jBd7CQNf-150x214.jpg"
},
{
    "titolo": " Adaline – L’eterna giovinezza ",
    "locandina": "http://www.metropoliscinemas.it/wp-content/uploads/adaline-poster-150x214.jpg"
},
{
    "titolo": " Avengers: Age of Ultron – 2D ",
    "locandina": "http://www.metropoliscinemas.it/wp-content/uploads/ultron.poster-2-150x214.jpg"
},
{
    "titolo": " Fast and Furious 7 ",
    "locandina": "http://www.metropoliscinemas.it/wp-content/uploads/49946-150x214.jpg"
}

]

现在,我想使用这种类型的 json:

{
"day1": [
    {
        "title": "blablablalbal",
    },
    {
        "title": "blablablalbal",
    }
],
"day2": [
    {
        "title": "blablablalbal",
    },
    {
        "title": "blablablalbal",
    }
],
"day3": [
    {
        "title": "blablablalbal",
    },
    {
        "title": "blablablalbal",
    }
]

}

我该怎么做? 对不起我的英语。

【问题讨论】:

  • Marco - 我明白你的英语没问题。然而,你需要给出一个你想要的数据结构的例子。我认为您只需要对循环进行一些小改动即可添加“电影”前缀。

标签: javascript ajax json node.js


【解决方案1】:

马可-

如果你总是有 3 个数组,简单的答案是:

var films = {day1: ar1, day2: ar2, day3: ar3};
res.send(JSON.stringify( films, null, 4 ));

您还可以编写一个简单的函数来连接和命名数据。运行下面的例子进行测试。

如果这不是您想要的,请提供更多信息。

示例:

<html>
  <body>
<b>Calendario Eventi</b><br>
   <textarea id="stdout" style="width:90%;height:20em;padding:1em;border:1px black solid;background-color:aliceblue;"></textarea>
    


<script type="text/javascript">
  
  function main() {
    var films = joinData([ ar1, ar2, ar3 ]);  
    document.getElementById('stdout').value = JSON.stringify( films, null, '  ' );
  }
  
function joinData( data ) {
  var i, obj={};
  for(i=0; i<data.length; i++) {
    obj["day" + (1 + i ) ] = data[i];
  }
  return obj;
}  
  
// EXAMPLE DATA: Films today, tomorrow, ...  

var ar1 = [
{
    "titolo": " Child 44 – Il bambino numero 44 ",
    "locandina": "http://www.metropoliscinemas.it/wp-content/uploads/Child-44-trailer-italiano-e-locandina-del-thriller-con-Gary-Oldman-e-Tom-Hardy-2-150x214.jpg"
},
{
    "titolo": " Run All Night – Una notte per sopravvivere ",
    "locandina": "http://www.metropoliscinemas.it/wp-content/uploads/locandina2-150x214.jpg"
},
{
    "titolo": " Ritorno al Marigold Hotel ",
    "locandina": "http://www.metropoliscinemas.it/wp-content/uploads/36366-150x214.jpg"
},
{
    "titolo": " I 7 nani ",
    "locandina": "http://www.metropoliscinemas.it/wp-content/uploads/xHIrTDXTLZF1jBd7CQNf-150x214.jpg"
}
];
  
var ar2 = [
{
    "titolo": " I 7 nani ",
    "locandina": "http://www.metropoliscinemas.it/wp-content/uploads/xHIrTDXTLZF1jBd7CQNf-150x214.jpg"
},
{
    "titolo": " Adaline – L’eterna giovinezza ",
    "locandina": "http://www.metropoliscinemas.it/wp-content/uploads/adaline-poster-150x214.jpg"
},
{
    "titolo": " Avengers: Age of Ultron – 2D ",
    "locandina": "http://www.metropoliscinemas.it/wp-content/uploads/ultron.poster-2-150x214.jpg"
},
{
    "titolo": " Fast and Furious 7 ",
    "locandina": "http://www.metropoliscinemas.it/wp-content/uploads/49946-150x214.jpg"
}
];
    
var ar3 = [
{
    "titolo": " The Gunman ",
    "locandina": "http://www.metropoliscinemas.it/wp-content/uploads/RIBqwqVPwUp6VIWeRZlS-150x214.jpg"
},
{
    "titolo": " Doraemon il film ",
    "locandina": "http://www.metropoliscinemas.it/wp-content/uploads/doraemon-il-film-le-avventure-di-nobita-e-dei-cinque-esploratori_notizia-2-150x214.jpg"
},
{
    "titolo": " Child 44 – Il bambino numero 44 ",
    "locandina": "http://www.metropoliscinemas.it/wp-content/uploads/Child-44-trailer-italiano-e-locandina-del-thriller-con-Gary-Oldman-e-Tom-Hardy-2-150x214.jpg"
},
{
    "titolo": " Run All Night – Una notte per sopravvivere ",
    "locandina": "http://www.metropoliscinemas.it/wp-content/uploads/locandina2-150x214.jpg"
},
{
    "titolo": " Ritorno al Marigold Hotel ",
    "locandina": "http://www.metropoliscinemas.it/wp-content/uploads/36366-150x214.jpg"
}
];
  
  main();
  
</script>
</body>
</html>

【讨论】:

  • 正是我想要的! ty
猜你喜欢
  • 2017-04-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-06-21
  • 1970-01-01
  • 2016-05-15
  • 1970-01-01
相关资源
最近更新 更多