Как сопоставить каждый новый объект json с разделителями строк в узле-событии Гобой в приложении Angular2?
У меня есть API, который возвращает данные, как это:
{"t":"point","id":817315,"tableid":141,"classid":142,"state":0,"loc":[6850735.34375,24501674.0039063]}
{"t":"line","id":817314,"tableid":204,"classid":2102,"loc":[[6850335.8828125,24501476.50390625],[6850341.48828125,24501476.8828125],[6850362.171875,24501492.21484375],[6850387.4140625,24501508.86328125],[6850442.66796875,24501545.69921875],[6850502.34375,24501584.0078125],[6850558.3359375,24501619.37109375],[6850611.375,24501654.73046875],[6850671.05078125,24501693.04296875],[6850708.62109375,24501687.1484375],[6850735.34375,24501674.00390625]]}
С таким кодом:
oboe('http://localhost:19100/pn/api/v1/fetch?cgid=22&north=6853000.0&east=24505000&south=6850000.0&west=24500000.0')
.node('*', (row) => {
console.log(row);
return oboe.drop;
})
.done(() => {
return oboe.drop;
})
.fail((err) => {
// error
console.log('oboe fail ', err);
return oboe.drop;
});
Мы приходим к ноду-обратному вызову не с каждой строкой, а с каждым отдельным значением. Т.е. значение строки 1-й раз "точка", 2-й раз 817315, 3-й раз 141 и так далее.
Моя цель - иметь объект json в каждой строке для чтения в объект.
Я задал подобный вопрос, но поскольку 1-ая проблема была проблемой CORS для API, она стала вопросом CORS, который я переименовал в соответствии с этим.
2 ответа
Это отвечает только на вопрос: Как сопоставить каждый объект JSON с узлом узла?
Каждая строка, представляющая объект json, соответствует шаблону '!' поэтому код выглядит примерно так:
oboe(url)
.node('!', (row) => {
console.log(row);
})
.on('end', () => {
console.log('Stream finished');
});
Приведенный выше код регистрирует каждый объект json и "Поток завершен", когда обрабатываются все объекты json.
Название и вопрос теперь изменены, чтобы соответствовать этому ответу лучше, и я, вероятно, задаю другой более конкретный вопрос.
Этот ответ сервера является плохой практикой. Так как ваш API работает на localhost, я думаю, что вы можете изменить этот ответ. Пожалуйста, ваш API отвечает на JSON Array.
[
{"t":"point","id":817315,"tableid":141,"classid":142,"state":0,"loc":[6850735.34375,24501674.0039063]},
{"t":"line","id":817314,"tableid":204,"classid":2102,"loc":[[6850335.8828125,24501476.50390625],[6850341.48828125,24501476.8828125],[6850362.171875,24501492.21484375],[6850387.4140625,24501508.86328125],[6850442.66796875,24501545.69921875],[6850502.34375,24501584.0078125],[6850558.3359375,24501619.37109375],[6850611.375,24501654.73046875],[6850671.05078125,24501693.04296875],[6850708.62109375,24501687.1484375],[6850735.34375,24501674.00390625]]}
]