【问题标题】:Access key values from list of dictionary YAML JS从字典 YAML JS 列表中访问键值
【发布时间】:2018-03-08 22:52:07
【问题描述】:

我有一个像这样的 YAML 中的字典列表

- movies:
  api   : 'api name'
  key   : 'value of key'
- music:
  api   : 'api name'
  key   : 'value of key'

我正在使用 'js-yaml' 并从 config.yml 读取

var fs = require('fs');
var yaml = require('js-yaml');
var config = yaml.safeLoad(fs.readFileSync('./config.yml'));
...
app.get('/api/hello', (req, res) => {
  let hello = { homehost: 'Hello'};
  res.json(config['movies']['api']); // doesnt work
  //res.json(config.movies['api']); doesnt work
  //res.json(config.movies.api); doesnt work
  //res.json(String(config.movies.api)); doesnt work
  //res.json(config); works but returns the full yaml
});
...

返回TypeError: Cannot read property 'path' of undefined

我希望js从var config获取moviesmusic下的api字段的值而不转换为json。
我尝试了不同的东西,但它不起作用。如果yaml结构需要改变,请指点。

谢谢

【问题讨论】:

    标签: javascript node.js yaml


    【解决方案1】:

    如果apikey 应该在movies/music 键下,那么您需要正确缩进:

    - movies:
        api   : 'api name'
        key   : 'value of key'
    - music:
        api   : 'api name'
        key   : 'value of key'
    

    这是一个字典列表,相当于下面的JSON:

    [
      {
        "movies": { "api": "api name", "key": "value of key" }
      },
      {
        "music": { "api": "api name", "key": "value of key" }
      }
    ]
    

    不过,这似乎与您想要的不符。根据您的用法config['movies'],您只需要一个字典(字典),而不是列表:

    movies:
      api   : 'api name'
      key   : 'value of key'
    music:
      api   : 'api name'
      key   : 'value of key'
    

    【讨论】:

    • 实际上,它的缩进是正确的,但没有用。在 yaml 开始工作之前删除了“-”。谢谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-05-30
    • 1970-01-01
    • 2022-09-28
    • 1970-01-01
    • 2021-08-04
    • 1970-01-01
    • 2023-03-21
    相关资源
    最近更新 更多