правильная структура для объекта JSON с несколькими значениями

1

Я создаю график (график GANTT), и мне нужно передать плагин JSON файл со всеми значениями для построения графика. Пример json для плагина таков:

source: [{
    name: "Example",
    desc: "Lorem ipsum dolor sit amet.",
    values: [{
        to: "/Date(1328832000000)/",
        from: "/Date(1333411200000)/",
        desc: "Something",
        label: "Example Value",
        customClass: "ganttRed",
        dataObj: foo.bar[i]
    }]
},
{
    name: "Example1",
    desc: "Stackoverflow rulez.",
    values: [{
        to: "/Date(1328832000000)/",
        from: "/Date(1333411200000)/",
        desc: "Something else",
        label: "Example Value 1",
        customClass: "ganttGreen",
        dataObj: foo.bar[i]
    }]
}]

Я добавил элемент Example1, а затем попытался проверить с помощью JSONLint, чтобы убедиться, что я строю массив правильно. К моему удивлению, валидатор вышел, сказав, что синтаксис недействителен после первого [{ (очевидно, я не передал source: в валидатор). Сообщение об ошибке, которое я получаю, говорит:

Error: Parse error on line 1:
[{    name: "Example",    de
--^
Expecting 'STRING', '}', got 'undefined'

Что я делаю неправильно? Почему валидатор поднимает эту ошибку? Json был написан в формате обычного txt с notepad++, поэтому я не могу думать о скрытом тексте в белых пространствах

  • 2
    Поскольку это не правильный JSON, это код JS для массива объектов. Вам также необходимо заключить в кавычки имена свойств, чтобы они правильно анализировались в JSONLint.
  • 0
    Ты прав! Очевидно, но не заметил этого. Автор плагина имел в виду json, и я не заметил, что это не было с самого начала
Показать ещё 2 комментария
Теги:

2 ответа

0

оберните ключи в двойные кавычки. это будет работать

"source":[
    {
        "name": "Example",
        "desc": "Lorem ipsum dolor sit amet.",
        "values": [{
            "to": "/Date(1328832000000)/",
            "from": "/Date(1333411200000)/",
            "desc": "Something",
            "label": "Example Value",
            "customClass": "ganttRed",
            "dataObj": foo.bar[i]
        }]
    },
    {
        "name": "Example1",
        "desc": "Stackoverflow rulez.",
        "values": [{
            "to": "/Date(1328832000000)/",
            "from": "/Date(1333411200000)/",
            "desc": "Something else",
            "label": "Example Value 1",
            "customClass": "ganttGreen",
            "dataObj": foo.bar[i]
        }]
    }
]

см. ниже скриншот для действительного json

Изображение 174551

0

Чтобы передать данные в качестве допустимого JSONLint, оберните все ключи в json-объекте в виде строки.

действительный json для вашего ввода

"source": [{
    "name": "Example",
    "desc": "Lorem ipsum dolor sit amet.",
    "values": [{
        "to": "/Date(1328832000000)/",
        "from": "/Date(1333411200000)/",
        "desc": "Something",
        "label": "Example Value",
        "customClass": "ganttRed",
        "dataObj": foo.bar[i]
    }]
},
{
    "name": "Example1",
    "desc": "Stackoverflow rulez.",
    "values": [{
        "to": "/Date(1328832000000)/",
        "from": "/Date(1333411200000)/",
        "desc": "Something else",
        "label": "Example Value 1",
        "customClass": "ganttGreen",
        "dataObj": foo.bar[i]
    }]
}]

Ещё вопросы

Сообщество Overcoder
Наверх
Меню