Как разбирать объекты из JSON в JavaScript и избегать [Функция (анонимно)]? - PullRequest
0 голосов
/ 06 мая 2020

У меня есть файл JSON, содержащий объект «книги»:

{
    "books": {
        "book1": {
            "name": "Smth1",
            "about": "Тут <b>описание</b> <i>книги</i>",
            "file": "id",
            "fileDesc": "Текст к файлу"
        },
        "book2": {
            "name": "Smth2",
            "about": "Тут <b>описание</b> <i>книги</i>",
            "file": "id",
            "fileDesc": "Текст к файлу"
        }
    }
}

И мне нужен этот объект. Но когда я читаю объект из файла и распечатываю его:

const obj = require('./file.json').books
console.log(obj)

, я получаю:

  book1: {
    name: [Function (anonymous)],
    about: [Function (anonymous)],
    file: [Function (anonymous)],
    fileDesc: [Function (anonymous)]
  },
  book2: {
    name: [Function (anonymous)],
    about: [Function (anonymous)],
    file: [Function (anonymous)],
    fileDesc: [Function (anonymous)]
  }
}

И не могу работать с объектом. Как исправить?

Ответы [ 2 ]

0 голосов
/ 06 мая 2020

только в файле. js добавить фигурные скобки:

{
    "books": {
        // ..
    }
}
0 голосов
/ 06 мая 2020

Сделайте его правильным json

{
    "books": {
        "book1": {
            "name": "Smth1",
            "about": "Тут <b>описание</b> <i>книги</i>",
            "file": "id",
            "fileDesc": "Текст к файлу"
        },
        "book2": {
            "name": "Smth2",
            "about": "Тут <b>описание</b> <i>книги</i>",
            "file": "id",
            "fileDesc": "Текст к файлу"
        }
    }
}

Теперь вы можете прочитать его

var fs = require('fs');
var obj = JSON.parse(fs.readFileSync('books.json', 'utf8'));

Вывод с терминала узла

> obj
{
  books: {
    book1: {
      name: 'Smth1',
      about: 'Тут <b>описание</b> <i>книги</i>',
      file: 'id',
      fileDesc: 'Текст к файлу'
    },
    book2: {
      name: 'Smth2',
      about: 'Тут <b>описание</b> <i>книги</i>',
      file: 'id',
      fileDesc: 'Текст к файлу'
    }
  }
}
> 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...