首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何解析古玉中的外孙?

如何解析古玉中的外孙?
EN

Stack Overflow用户
提问于 2015-07-24 15:56:44
回答 2查看 919关注 0票数 0

我在我的模板系统中使用玉模板,通过我的jade locals将一个json文件作为gulpfile.js传入,但我似乎无法深入研究json。我觉得我忽略了一些基本的东西,但在网上找不到一个例子。

gulpfile.js:

将json文件传递给玉器

代码语言:javascript
复制
gulp.task('html', function() {
    gulp.src('./markup/*.jade')
        .pipe(jade({
            pretty: true,
            locals: JSON.parse( fs.readFileSync('./markup/data/website_data.json', { encoding: 'utf8' }) )
        }).on('error', gutil.log))
        .pipe(gulp.dest('../'))
});

然后在我的玉中,为了便于阅读,我只是将locals传递到一个变量中。

代码语言:javascript
复制
- var employees = locals

我可以循环遍历json,这是一个层次的深度:

翡翠:

代码语言:javascript
复制
for employee in employees
  if employee.Tier === 'Founder'
    li 
        button(data-bio="#{employee.LastName.toLowerCase()}") 
            img(src="/public/img/employees/#{employee.FirstName.toLowerCase()}-#{employee.LastName.toLowerCase()}.jpg", alt="#{employee.FirstName} #{employee.LastName} | #{employee.Title}")
            strong #{employee.FirstName} #{employee.LastName}
            | #{employee.Title}

杰森:

代码语言:javascript
复制
[
  {
    "FirstName":"John",
    "LastName":"Doe",
    "Title":"Strategist",
    "Tier":"Founder",
    "Description":"",
    "Email":"",
    "Links":""
  },
...
]

但是,只有当我循环遍历的项位于根目录中时,这才对我起作用,一旦我使json更深一层,我就无法使它基于key**.运行。我想让json更深一点,这样我就可以在网站的不同部分,而不仅仅是员工。

代码语言:javascript
复制
[{
    "employees": [
        {
            "FirstName":"Jason",
            "LastName":"Bellinger",
            "Title":"Lorem Ipsum",
            "Tier":"",
            "Description":"",
            "Email":"",
            "Links":""
        },
        ...
    ]
}]

我尝试了几种不同的方法来挖掘json,但到目前为止都失败了。

尝试1:调整变量调用并保持相同的循环

代码语言:javascript
复制
- var employees = locals.employees

在运行$gulp watch的终端中,我得到“无法读取未定义的属性”的“长度”。

还试着:

代码语言:javascript
复制
- var employees = locals['employees']

同样的结果。

尝试2:不要使用var并在我的循环中直接调用locals

代码语言:javascript
复制
for employee in locals.employees

代码语言:javascript
复制
for employee in locals["employees"]

最后我也犯了同样的错误。

企图3:

保持var并调整循环

代码语言:javascript
复制
  - var employees = locals
  ...
  for employee in employees
    li #{employee.LastName}

那么我在终端上没有错误,但是我没有得到任何内容。它产生一个空的li

所以,我试着在循环中做一个更深的层次,包括:

代码语言:javascript
复制
for employee in employees[0]
        li #{employee.LastName}

代码语言:javascript
复制
for employee in employees['employees']
        li #{employee.LastName}

我仍然没有得到错误和一个空的li

在我的时代,我已经分析了足够多的jsonjade看起来也够简单了,我必须忽略一些基本的东西。谁能让我谦卑一点。

我也尝试过gulp-data,但是我用我的方法将数据输入jade,所以我认为这是我在jade中的方法.

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-07-24 16:56:51

您需要访问局部变量内部的数组。local =1的长度,这是员工的整个数组。

您需要将employees =设置为局部变量中的数组,并使用:

代码语言:javascript
复制
 "- var employees = locals[0].employees"
票数 2
EN

Stack Overflow用户

发布于 2015-07-24 16:47:45

我就知道这是最基本的。我将所有内容恢复到原来的设置中,并更改了var,这是可行的。

代码语言:javascript
复制
- var employees = locals[0]['employees']

实话实说,我以为我已经试过了,但又回去再试.

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31614931

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档