Json 未捕获的SyntaxError,jade中for循环中的意外标识符

Json 未捕获的SyntaxError,jade中for循环中的意外标识符,json,node.js,for-loop,express,pug,Json,Node.js,For Loop,Express,Pug,我正在尝试用一些动态内容渲染一块翡翠。我正在读一篇关于jade的json文章。 我的json看起来像这样 { data1: 'data1', data2: 'data2', data3: [ { name: 'ABC', address: 'India' }, { name: 'DEF', address: 'Australia' }]} 我试图呈现一个jade并使用上面json中的数据 我的玉看起来像 var data1 = #{data1};

我正在尝试用一些动态内容渲染一块翡翠。我正在读一篇关于jade的json文章。 我的json看起来像这样

{ data1: 'data1',
  data2: 'data2',
  data3: 
 [ { name: 'ABC',
   address: 'India'
   },
   { name: 'DEF',
   address: 'Australia'
   }]}
我试图呈现一个jade并使用上面json中的数据 我的玉看起来像

  var data1 = #{data1};
  var data2 = #{data2};
  var size = #{data3.length};
  for data in #{data3}
    var name = data.name;
    var address = data.address;
我能够正确地提取上面提到的前3行中的数据。但当我试图从循环中获取数据时,在调试时会出现“未捕获的SyntaXError,意外标识符”错误。 如果我在for循环中放一条线,它工作得很好。前

 var name = #{data3[0].name};
渲染正确。但我需要迭代一个循环并在那里获取数据。有人能帮忙吗。 谢谢

更新更多信息 1.我在运行节点服务器时创建了一个json-

 var json_string = "{"data1":"data1","data2":"data2","data3":[{"name":"ABC","address":"India"},{"name":"DEF","address":"Australia"}]};";
 var json_data = JSON.parse(json_string);
 console.log(json_data);
 res.render('sample_example', json_data);
  • 在我的示例_example.jade中,脚本中有以下代码片段

      var data1 = #{data1};
      var data2 = #{data2};
      var size = #{data3.length};
      for data in #{data3}
        var name = data.name;
        var address = data.address;
    

  • 如前所述,我能够正确地将#{data1}、#{data2}、#{data3.length}提取到变量中。但它打破了for循环。事实上,我能够从for循环外部提取#{data3[0].name}。但是在for looop中,它给出了声明的错误。

    这就是您现在可以做的

    在服务器端,您必须
    JSON.stringify
    对象数组

    var json_data = JSON.parse(json_string);
    
    // Convert back to json only the property data3
    json_data.data3 = JSON.stringify(json_data.data3);
    res.render('simple', json_data);
    
    或者更好的方法是不解析JSON,让它按原样运行:

    // var json_data = JSON.parse(json_string);
    res.render('simple', {
      json_data: json_string
    });
    
    在翡翠模板中(如果您采用更好的方法):

    您还需要更改循环结构。中..的
    用于迭代对象而不是对象数组。

    这对我很有用

    var json_data = JSON.parse(json_string);
    
    // Convert back to json only the property data3
    json_data.data3 = JSON.stringify(json_data.data3);
    res.render('simple', json_data);
    
    - var cdata = {"data1":"data1","data2":"data2","data3":[{"name":"ABC","address":"India"},{"name":"DEF","address":"Australia"}]};
    each data in cdata.data3
      - var name = data.name;
      - var address = data.address;
      p Name: #{name}
      p Address: #{address}
    

    如果如上所示的代码更新不起作用,您可以共享实际的jade文件内容吗。还有什么版本的jade和express?

    它不起作用。我在脚本中使用这个。jade将其视为变量而不是html元素。我也按照建议做了尝试,得到了“Uncaught SyntaxError Unexpected token var”。@BKSingh您的JSON应该用
    单引号括起来,还要确保缩进正确。这就是我的html看起来像var data1=data1;var data2=data2;变量大小=2;对于[object object],[object object]中的数据,我仍然停留在这一点上。。是否有一种方法可以在单个语句中为每个语句设置多个。我现在以{“名称”:[“X”,“Y”],“地址”:[“印度”,“澳大利亚”]}的形式发送我的数据。我能够以“名称中的数据”或“添加中的数据”的形式对它们进行迭代。。。。但是我希望它们在一个循环中,而不是在data3-var name=data.name;-var地址=data.address(没有
    data3
    上的花括号)不适合你吗?不,不适合。我仍然会在chrome调试器的“uncaught syntax error…”行之后出现错误——“意外标识符”I get“>”。。不确定这是否是导致问题的原因