Ожидаемый объект JSON, массив или literal.json - PullRequest
0 голосов
/ 18 декабря 2018

У меня есть файл JSON, который я использую для хранения цитат для какого-то генератора цитат, который я создаю.Недавно я получил эту ошибку в моем терминале (см. Скриншот ниже).

Expected a JSON object, array or literal.json

Вот как выглядит мой JSON

data = [
{
    "number": "1",
    "author": "Von R. Glitschka",
    "quote": "The client may be king, but he's not the art director."
},
{
    "number": "2",
    "author": "Frank Capra",
    "quote": "A hunch is creativity trying to tell you something."
},
{
    "number": "3",
    "author": "Steven Heller",
    "quote": "As a profession, graphic designers have been shamefully remiss or ineffective about plying their craft for social or political betterment."
}]

Я перепробовал всеЯ мог бы.но ошибка продолжает появляться, что может быть не так?

enter image description here

Ответы [ 4 ]

0 голосов
/ 21 января 2019

Вам просто нужно отформатировать ваш файл примерно так:

{
  "data" : [
    {
        "number": "1",
        "author": "Von R. Glitschka",
        "quote": "The client may be king, but he's not the art director."
    },
    {
        "number": "2",
        "author": "Frank Capra",
        "quote": "A hunch is creativity trying to tell you something."
    },
    {
        "number": "3",
        "author": "Steven Heller",
        "quote": "As a profession, graphic designers have been shamefully remiss or ineffective about plying their craft for social or political betterment."
    }]
}

И сохраните его с расширением .json.

0 голосов
/ 18 декабря 2018

Альтернативный подход к этому

data = [
{
"number": "1",
"author": "Von R. Glitschka",
"quote": "The client may be king, but he's not the art director."
},
{
"number": "2",
"author": "Frank Capra",
"quote": "A hunch is creativity trying to tell you something."
},
{
"number": "3",
"author": "Steven Heller",
"quote": "As a profession, graphic designers have been shamefully remiss or ineffective about plying their craft for social or political betterment."
}];

console.log(data);
var random = Math.floor(Math.random() * data.length); 
console.log(data[random].quote);
console.log(data[random].author);
0 голосов
/ 18 декабря 2018

Ну, во-первых, это не совсем формат JSON.Это массив объектов.Ваш JSON не может иметь присвоение переменной, подобное тому, которое у вас есть var data = ..... В зависимости от того, почему вы получаете ошибку или что вы намерены делать с данными.У вас есть 2 варианта:

  1. Преобразовать этот массив в приемлемый объект JSON, например, так: $ JSON.stringify(data).

  2. Вы можете работать с этимданные непосредственно в виде массива, просто сохраняя их в виде переменной js или в файле js.Тогда вы можете легко манипулировать им как массивом.

0 голосов
/ 18 декабря 2018

Похоже, учитывая ваши данные и код, который вы используете для получения случайного числа, ваше число часто превышает количество объектов в вашем массиве.

Например,

Math.floor(Math.random() * 50)

Может в конечном итоге установить случайное значение 13, что значительно превышает количество значений в вашем массиве.

Если вы хотите получить случайное число от 0 до 2, вы можете использовать:

random = Math.floor(Math.random() * Math.floor(3));
...