Json的Json Parse

时间:2014-05-23 08:14:54

标签: node.js express

我想在jade中渲染我的json。我发送Json Data但是这会给出这样的错误

       app.get('/showRequestAccepted',function(req,res){
      Account.getFriends(req.user,{"friends.status":Status.Accepted},function(err,sonuc)          {
         if(err) throw err
        //Json'i formatted göstermek için  null ve 4 boşluk için
        else
        console.log(sonuc);
        res.render('profil',{sonuc:JSON.stringify(sonuc)});


        });

});

in Jade Using Jade to iterate JSON我发现这个例子对我没有帮助

         each jsonObj in sonuc
          li=jsonObj.username

我收到此错误

  500 TypeError: /Users/ANTEGRUP/Desktop/passport-local-master/views/profil.jade:31 29|   30| div#userlist > 31| each jsonObj in sonuc 32| li=jsonObj.username 33| 34| Cannot read property 'length' of undefined

1 个答案:

答案 0 :(得分:2)

我认为你混淆了JSON和javascript对象,基本上你的代码应该是这样的:

   app.get('/showRequestAccepted',function(req,res){
   Account.getFriends(req.user,{"friends.status":Status.Accepted},function(err,sonuc) {
     if(err) throw err
     //Json'i formatted göstermek için  null ve 4 boşluk için
     else
       console.log(sonuc);
     res.render('profil',{sonuc: sonuc)});
   });

要使您的示例正常工作,sonuc必须是包含用户名字段的对象数组。在javascript对象文字表示法中,这将是一个示例:[{ username : 'a' }]

现在JSON是一种数据交换格式。当你执行JSON.stringify(sonuc)时,你将得到一个表示该数组的字符串。您可以使用返回true的typeof JSON.stringify(sonuc) === 'string'进行确认。但是在这种情况下我们需要一个对象数组,所以如果它是数组,Array.isArray(sonuc)应该返回true。

您可以查看此问题:Javascript object Vs JSON