Я хочу создать формат 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 по "," и ";"). Как это исправить?

Спасибо.

С уважением, Бобби

1
Albertus 8 Дек 2016 в 14:42

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 не поддерживает группы.

0
georg 8 Дек 2016 в 11:54

Обратите внимание, это должно быть:

{"key":"1", "value": "description 1"}

Вам нужно использовать несколько циклов. И процесс такой:

  1. Определите конечный объект.
  2. Шаг первый: разделить на ;.
  3. Шаг второй: Разделить каждый элемент на ,.
  4. Нажимай все на конечный объект.

< Сильный > Отрывок

// 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);
1
Praveen Kumar Purushothaman 8 Дек 2016 в 11:45

Вы можете отобразить разделенные части с новым объектом для свойств ключа и значения.

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);
0
Nina Scholz 8 Дек 2016 в 11:47