Это, прежде всего, вопрос Javascript/JSON, однако, если кто-либо знает о решении Webix, я также открыт для этого.
Фон
Я использую Webix в качестве интерфейса пользовательского интерфейса Javascript. В настоящее время я заполняю данные Webix Datatable с данными JSON, которые выглядят примерно так:
complexData = {
"metadata": {
"itemno": 111222333,
"groupid": 19,
"name": "Blah"
},
"configs": [
{
"id": 1,
"name": "First",
"description": "some stuff",
"value": 222
},
{
"id": 3,
"name": "Third",
"description": "Foo",
"value": 333
}
],
"system": null
}
Я инициализирую свой компонент Datatable, например:
webix.ui({
view:"datatable",
columns:[
{ id:"id", header:"ID" },
{ id:"name", header:"Name" },
{ id:"description", header:"Description", fillspace: true },
{ id:"value", header:"Value" }
],
data: complexData.configs
});
Это отлично работает.
Вы можете видеть, что здесь выглядит: https://snippet.webix.com/4jd9cobb.
Как вы можете видеть, я просто " complexData
до" complexData
и complexData
configs
, чтобы получить данные для моего компонента.
Однако (из-за обработки, которую я должен выполнить позже), мне нужно немного изменить структуру данных. Мне нужно, чтобы объекты внутри configs
были введены на основе их id
, что может быть произвольным. Это, конечно, означает, что configs
теперь является объектом объектов, а не только массивом:
complexData = {
"metadata": {
"itemid": 111222333,
"groupid": 19,
"name": "Blah"
},
"configs": {
"1": {
"id": 1,
"name": "First",
"description": "some stuff",
"value": 222
},
"3": {
"id": 3,
"name": "Third",
"description": "Foo",
"value": 333
}
},
"system": null
}
Это больше не отображает мои строки.
Вот как это выглядит: https://snippet.webix.com/n8ypdeia
подробности
Если я console.log
мой рабочий результат (массив), я получаю следующее:
(2) [{…}, {…}]
0: {id: 1, name: "First", description: "some stuff", value: 222 }
1: {id: 3, name: "Third", description: "Foo", value: 333 }
length: 2
Мой неудачный результат (объект объектов) дает это:
{1: {…}, 2: {…}}
1: {id: 1, name: "First", description: "some stuff", value: 222 }
3: {id: 3, name: "Third", description: "Foo", value: 333 }
Таким образом, complexData.configs
появляется в Javascript/Webix как единый объект, а не как набор объектов.
Поэтому мой вопрос таков:
Как я могу ссылаться на complexData.configs
таким образом, что Javsacript/Webix знает его как коллекцию/или как массив?
или же
Есть ли способ получить (сопоставление?) Webix для синтаксического анализа complexData.configs
чтобы он распознавал объекты внутри как строки данных?
Благодарю.
Там довольно простое решение, которое можно найти в Object.values()
const complexData = {
"configs": {
"1": {
"id": 1,
"name": "First",
"description": "some stuff",
"value": 222
},
"3": {
"id": 3,
"name": "Third",
"description": "Foo",
"value": 333
}
}
}
console.info(Object.values(complexData.configs))
Это не поддерживается ни в одной версии Internet Explorer, но доступно несколько полиполков