2014-05-19 27 views
0

予格式化的字符串(I可以格式化以任何方式字符串)字符串數組的NodeJS

例如

id1:234,id2:4566,id3:3000 

然後對其進行加密,並通過查詢字符串傳遞

?qs=djdjdjfjf57577574h33h3h3hh3h3 

然後解密它在節點上

id1:234,id2:4566,id3:3000 

這是最好的方法來格式化字符串,然後把它變成一個數組中的節點

arr[id1] = "234"; 
    arr[id2] = "4566"; 
    arr[id3] = "3000"; 
+1

請問這種解決方案的背景是什麼?你在做什麼? – lascort

+0

從php站點傳遞參數到節點soket –

+0

什麼是'id1','id2'和'id3'應該在你的例子中?他們不是變量,但字符串文字是正確的? – Amberlamps

回答

3

首先,你有什麼作爲你的對象模型更像對象的哈希或只是一個JavaScript對象,具有鍵和值的,所以最好的方法就是使用JSON.parse

所以,如果你能做到這一點,你說:我可以格式以任何方式串,你最好先改變你的格式有這樣的:

'{"id1":234,"id2":4566,"id3":3000}' 

代替:

id1:234,id2:4566,id3:3000 

你可以在客戶端使用JSON.stringify來實現JavaScript使用JavaScript對象而不需要處理字符串格式化:

//on the client side 
var myObj = {}; 
myObj.id1 = 234; 
myObj.id2 = 4566; 
myObj.id3 = 3000; 
var objStr = JSON.stringify(myObj); 

假設你使用一個名爲encrypt函數加密您的字符串:

var encryptedStr = encrypt(objStr); 
//so now you should use encodeURI to be able to put it in the queryString 
var queryStringParam = encodeURI(encryptedStr); 

現在你把queryStringParam在查詢字符串。

然後在node.js端,你應該做的就是將它解析爲一個JSON對象。您可能考慮過的另一個重點是使用decodeURI。對於最後一步,讓我們說你正在使用名爲decrypt E類功能:

//the server-side code 
var decryptedStr = decrypt(decodeURI(yourQueryString)); 
var obj = JSON.parse(decryptedStr); 

現在obj是你想要什麼。

+0

謝謝它的工作原理!但是如果我把客戶端部分用於加密字符串是沒用的;) –

4

我想你想使用HashMap的(對象),而不是數組: var obj = {} 然後嘗試:

"id1:234,id2:4566,id3:3000".split(",").forEach(function(e){ 
    var record = e.split(":"); 
    obj[record[0]] = record[1]; 
}) 

,給你: {id1: "234", id2: "4566", id3: "3000"}

+0

沒有'each'功能。你可以使用'forEach',但是這不支持 Amberlamps

+0

這將是在NodeJS方面,我認爲有''每個'''因爲在Chrome上有:) – IProblemFactory

+0

根據我可以告訴 – Amberlamps