2016-06-15 2 views
0

этот меня озадачивает, и я даже не уверен, что ищу правильные ключевые слова для возможных объяснений.Javascript map CSV string к массиву JSON

Я отправляю RPC на удаленный сервер. Ответ я получаю только через запятую строки со значениями (без ключей), как так:

val1,val2,val3,val4,val5,val6,val7,val8,val9 

Когда я получаю этот ответ мне нужно преобразовать эти значения через JS для ключей (жестко закодированными, я обозначаю) и генерировать массив JSON как это:

{ 
    "response": { 
    "mykey1" : "val1", 
    "mykey2" : "val2", 
    "mykey3" : "val3", 
    "mykey4" : "val4", 
    "mykey5" : "val5", 
    "mykey6" : "val6", 
    "mykey7" : "val7", 
    "mykey8" : "val8", 
    "mykey9" : "val9" 
    } 
} 

кто-нибудь может подтолкнуть меня в правильном направлении ... образец кода или учебники, которые близки к тому, что я ищу? Это сценарий промежуточного программного обеспечения, который вызывается, когда сервер получает ответ.

Это мое первое сообщение здесь, долгое время изучающее и применяющее в Obj-C, и поскольку я изучаю Swift, но JS для меня новичок. Заранее прошу прощения, если я разорвать любые протоколы, прося помощи, не отправляя мои слабые попытки выяснить это ...

+0

Вы знаете, что ваши ключи? Что делать, если у вас есть 15 ключей и только верните 5 'val'? – mariocatch

+0

Hello mariocatch. Да, я просто обновил свой пост. строка, которую я получаю, всегда будет иметь одинаковое количество значений (в моем случае это 11) и всегда будет в том же порядке. Если значение не возвращено, оно будет выглядеть так: val1, val2,, val4 ,,, val7 ... но всегда будет x количество разделителей запятой. –

+0

Просто используйте 'String.split (',')', тогда вы можете делать все, что хотите, с результирующим массивом. Объект, который вы хотите создать с результатами, должен иметь смысл. Если вы просто хотите использовать эти ключи, зачем вообще вообще создавать объект? – PHPglue

ответ

1
  1. Вы может split ответ на запятую, которая даст вам массив.

  2. Поскольку оба массива (ключи и vals) имеют одинаковую длину, вы можете перебрать их и создать свой массив объектов таким образом. Ниже

var response = 'val1,val2,val3,val4,val5'; 
 
var keys = [ 
 
    'key1', 'key2', 'key3', 'key4', 'key5' 
 
]; 
 

 
var dict = []; 
 
var vals = response.split(','); 
 

 
vals.forEach(function(val, i) { 
 
    dict[keys[i]] = val; 
 
}); 
 

 
console.log(dict);

+0

Хорошо, отлично! Позвольте мне немного поработать и вернуться к результатам. Спасибо! –

0

Прочитайте мой комментарий, а затем проверить это:

var result = 'val1,val2,val3,val4,val5,val6,val7,val8,val9'; 
// real question should be why result is not JSON already 
var resArray = result.split(','); 
console.log(resArray[0]); // first result 
console.log(resArray[1]); // second result 
+0

Спасибо PHPGlue, я дам этот снимок. Я не могу изменить ответ конечной точки, это система обработки платежей, уже прошедшая сертификацию бренда карты и т. Д. Любые изменения в ней требуют разного рода драмы. Спасибо! –