Разбор request.body в строку, затем создание JSON - PullRequest
0 голосов
/ 20 апреля 2020

Я застрял при разборе строки прямо сейчас в тип json. Я получил тело запроса до строки, но не могу правильно разобрать данные.

Что у меня есть:

String to parse:
uniq1.data.data.data 7 bleep\nuniq2.data.data.data 4 boop\nuniq3.data.data.data 7 bleep\ntets4.data.data.data 7 bleep\nuniq5.data.data.data 7 bleep\ntest6.data.data.data 7 fgws

Хотелось бы преобразовать строку в JSON со следующей структурой, чтобы я мог вставить ее в mon goose db:

name: uniq1
typeID: 7
type: bleep

name: uniq2
typeID: 4
type: boop

name: tets4
typeID: 7
type: bleep

В настоящее время я пытаюсь заменить все новые строки '\ n' запятыми, чтобы я мог анализировать данные с помощью запятых, но когда я выполняю bodyText.replace (new RegExp ("\ n", " g "),", ") ничего в строке не меняется. Я также думаю, что, возможно, есть лучший способ go об этом, о котором я не думаю.

Спасибо за любую помощь!

Ответы [ 2 ]

1 голос
/ 20 апреля 2020

Вы можете попробовать это-

let str = "uniq1.data.data.data 7 bleep\nuniq2.data.data.data 4 boop\nuniq3.data.data.data 7 bleep\ntets4.data.data.data 7 bleep\nuniq5.data.data.data 7 bleep\ntest6.data.data.data 7 fgws";


const arr = str.split("\n");

const json = arr.reduce((acc, curr) => {
	const [first, typeID, type] = curr.split(" ");
	const [name] = first.split('.');
	
	acc.push({name: name, typeID, type});

	return acc;
}, []);

console.log(json);
.as-console-wrapper{min-height: 100% !important; top: 0;}

Примечание: Я нашел что-то вроде bleep\uniq5 вместо bleep\nuniq5. Если request.body посылает вам именно это, вам не повезло.

0 голосов
/ 20 апреля 2020
const a = "uniq1.data.data.data 7 bleep\nuniq2.data.data.data 4 boop\nuniq3.data.data.data 7 bleep\ntets4.data.data.data 7 bleep\nuniq5.data.data.data 7 bleep\ntest6.data.data.data 7 fgws";
const b = a.split("\n");
const c = b.map((el) => el.split(" "));
const d = c.map(([name, typeID, type]) => {
  return { name, typeID, type };
});
console.log(d);

b разбивает тело на линии. c разбивает каждую строку на массив, разделенный на каждый пробел. d отображает массив каждой строки в объект с помощью клавиш.

Я немного изменил ввод. \uniq5 эта часть выглядит противоречивой, и я думаю, что это должно быть \ nuniq5.

...