2013-01-22 128 views
0

我有從外部數據源獲取的此字符串。它看起來像這樣:將長字符串格式化爲JSON

var myString = "Worker Management System : 

    Your request has been submitted 
    ________________________________________ 
    Your Account User Info: 
    Name : Doe, John, A 
    ID : JDOE123  
    Email :   
    Title : Worker 
    BusinessUnit : BARN 
    Department : PIGS 
    EmployeeID :    
    SupervisorName : Doe, Jane, B 
    HireDate : 02/22/2002 
    Role : Feed Pigs; 
    ManagerEmail : [email protected] 

    City : New York 
    State : NY 
    ZipCode : 12345 
    Phone : -- 
    " 

我想解析成JSON(或東西,我可以工作),這樣我可以打電話也許myString.Name,並使其返回DOE,約翰A.

這可能嗎?對於我來說,修改我得到這個字符串的方式並不是一種選擇,我只是想對它進行格式化,以便我可以輕鬆地從中提取數據。

我已經看過Douglas Crockford的JSON.parse,但是如果我的字符串沒有正確格式化,那對我沒有任何好處。

+2

首先,你必須將你的字符串轉換爲對象。它可以通過文本解析來完成。 JSON在這裏沒有任何關係。 – VisioN

+2

這甚至不是有效的JavaScript。是否來自外部源的'var myString ='部分? – PleaseStand

回答

2
String.prototype.trim=function(){return this.replace(/^\s+|\s+$/g, '');}; 


function my_string_to_object(myString) 
{ 
    var tmp = myString.split('Your Account User Info: ',2); 
    var tmp = tmp[1].split("\n");  
    var obj = {}; 
    for(var k=0;k<tmp.length;k++) {  
     var line = tmp[k].split(' : '); 
     if(typeof(line[1]) != 'undefined') { 
      obj[ line[0].trim() ] = line[1].trim(); 
     } 
    } 
    return obj; 
} 
+0

[爲什麼不使用數組for循環](http://stackoverflow.com/questions/500504/javascript-for-in-with-arrays) – Bergi

+0

@Bergi:是的,我知道,我太懶惰了 – Peter

相關問題