2016-06-15 45 views
0

这一个让我感到困惑,我甚至不确定我在寻找可能的解释的正确关键字。Javascript地图CSV字符串到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

你好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

好的伟大的matiocatch!让我稍微研究一下,然后找回结果。谢谢! –

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,我会给这个镜头。我无法改变终端响应,它是一个已经通过卡品牌认证的支付处理系统等等。任何改变都需要各种戏剧。谢谢! –