2010-06-19 38 views
0

我有三個字符串。創建星號分隔字符串的JavaScript對象

var ids = "1*2*3"; 
var Name ="John*Brain*Andy"; 
var Code ="A12*B32*C38"; 

我想創建它的JavaScript對象。

+1

你的意思是:你希望那些星號隔開的字符串轉換成數組,把他們都在同一個對象?順便說一句,'JSON對象'不存在,JSON僅僅是一種符號,一種用純文本表示JavaScript對象的方式。 – 2010-06-19 11:21:10

+0

正確的,我想要那樣。 – IsmailS 2010-06-19 11:21:58

+0

你的用途是什麼?將數據選項傳遞給ajax調用? – 2010-06-19 11:23:19

回答

2

JSON對象只是一個字符串,所以這將是:

var json = '{"ids":"'+ids+'","Name":"'+Name+'","Code":"'+Code+'"}'; 

如果你想轉換成字符串數組中的字符串:

var json = '{"ids":["'+ids.replace(/\*/g,'","')+'"],"Name":["'+Name.replace(/\*/g,'","')+'"],"Code":["'+Code.replace(/\*/g,'","')+'"]}'; 

如果你是不是在所有looing的JSON ,但實際上是Javascript對象,它應該是:

var obj = { 
    ids: ids.split('*'), 
    Name: Name.split('*'), 
    Code: Code.split('*') 
}; 

根據您的描述「我要第一個項目o F進行有三個道具的陣列,即編號,名稱和代碼值,分別爲約翰,A12「,然而這將是完全不同的:

var Ids = ids.split('*'), names = Name.split('*'), codes = Code.split('*'); 
var arr = []; 
for (var i = 0; i < Ids.length; i++) { 
    arr.push({ Id: Ids[i], name: names[i], code: codes[i] }); 
} 

如果你想,作爲JSON,這將是:

var Ids = ids.split('*'), names = Name.split('*'), codes = Code.split('*'); 
var items = []; 
for (var i = 0; i < Ids.length; i++) { 
    items.push('{"Id":"'+Ids[i]+'","name":"'+names[i]+'","code":"'+codes[i]+'"}'); 
} 
json = '[' + items.join(',') + ']'; 

(注:最後一個代碼只正常工作時的字符串不包含任何引號,否則他們必須把字符串時要逃脫。)

+0

我認爲OP會將JavaScript對象的JSON字符串混淆。 – 2010-06-19 11:28:04

+0

@Marcel:也許吧。我還添加了一些Javacript代碼也... – Guffa 2010-06-19 11:29:33

+0

ID 1是約翰和A12是他的代碼。所以我希望數組的第一項有三個道具,分別是Id,名稱和代碼,值分別爲1,John,A12。是的,我正在尋找Javascript對象。但是我把它和JSON混淆了 – IsmailS 2010-06-19 11:38:50

1

我發現Guffa給予好答案。我只想從手動JSON序列化中勸阻,因爲Name屬性可能有一個必須轉義的特殊字符。因此,我建議Guffa的建議的最小變化,並使用JSON.stringify(見http://www.json.org/js.html

var Ids = ids.split('*'), names = Name.split('*'), codes = Code.split('*'); 
var arr = []; 
for (var i = 0; i < Ids.length; i++) { 
    arr.push({ Id: Ids[i], Name: names[i], Code: codes[i] }); 
} 
var result = JSON.stringify(arr); 
+0

+1謝謝奧列格。目前我不需要JSON。我將編輯該問題。當我需要JSON時,我會使用stringify。再次感謝 – IsmailS 2010-06-19 12:01:19