Я хочу создать формат JSON из переменной JavaScript.
var code="1,description 1;2,description 2;3,description 3;4,description 4";
Я хочу изменить формат JSON:
var result = [{"key":"1", "value","description 1"},{"key":"2", "value","description 2"},{"key":"3", "value","description 3"},{"key":"4", "value","description 4"} ]
Я уже использовал split, но слишком сложно, потому что использую 2 split (split по "," и ";"). Как это исправить?
Спасибо.
С уважением, Бобби
3 ответа
При анализе материала в Javascript вы обычно создаете регулярное выражение, представляющее один элемент данных, и глобально заменяете его функцией, которая заполняет некоторую структуру и помещает ее в коллекцию:
let data = [];
let str = "1,description 1;2,description 2;3,description 3;4,description 4";
str.replace(/(.+?),(.+?)(;|$)/g, (_, key, value) => data.push({key, value}));
console.log(data)
Причина (ab) использования .replace
для этого заключается в том, что глобальный .match
не поддерживает группы.
Обратите внимание, это должно быть:
{"key":"1", "value": "description 1"}
Вам нужно использовать несколько циклов. И процесс такой:
- Определите конечный объект.
- Шаг первый: разделить на
;
. - Шаг второй: Разделить каждый элемент на
,
. - Нажимай все на конечный объект.
< Сильный > Отрывок
// Define final object:
var finalArray = [];
var code = "1,description 1;2,description 2;3,description 3;4,description 4";
// Step one: Split on ;
code = code.split(";");
// Step two: Split on ,
for (var i = 0; i < code.length; i++) {
code[i] = code[i].split(",");
finalArray.push({
"key": code[i][0],
"value": code[i][1]
});
}
// Let's see the output:
console.log(finalArray);
Вы можете отобразить разделенные части с новым объектом для свойств ключа и значения.
var code="1,description 1;2,description 2;3,description 3;4,description 4",
result = code.split(';').map(function (a) {
var p = a.split(',');
return { key: p[0], value: p[1] };
});
console.log(result);
Похожие вопросы
Новые вопросы
javascript
По вопросам программирования на ECMAScript (JavaScript / JS) и его различных диалектах / реализациях (кроме ActionScript). Включите все соответствующие теги в свой вопрос; например, [node.js], [jquery], [json] и т. д.