2013-02-28 58 views
-3

我收到了一个像这样的字符串。
我确实键入了,我把它作为字符串
字符串非常大,所以我发布了一部分。我需要的是Json或它的数组。请帮忙。如何用Javascript解析字符串看起来像对象

+0

这是select元素的字符串表示形式吗? – thatidiotguy 2013-02-28 16:53:12

+0

惊讶....确切地说.... – Wazzzy 2013-02-28 16:53:40

+0

你是如何在第一个地方结束这件事的?我们可以看到一些代码吗? – 2013-02-28 16:54:31

回答

2

这是你在找什么?
此代码实质上将字符串转换为键值对的数组。

的jsfiddle链接:http://jsfiddle.net/Dap6C/2/

var x = '[System.SelectOption[value="account__c", label="Account", disabled="false"], System.SelectOption[value="account_owner__c", label="Account Owner", disabled="false"], System.SelectOption[value="accountname__c", label="Business Name", disabled="false"]]'; 

x = x.substring(0, x.length - 1).substring(1, x.length).replace(/System.SelectOption/g,""); 
var xp = x.substring(0, x.length - 1).substring(1, x.length).replace(/, /g,","); 
var y = xp.split('],['); 

var mainarray = []; 
for(var i=0;i<y.length;i++){ 
var z = y[i].split(','); 
    var elements = []; 
    for(var j=0;j<z.length;j++){ 
     var m = z[j] ; 
     m =m.split('='); 
     elements[m[0]] = m[1]; 
    } 
    mainarray.push(elements); 
} 

var samplelement = mainarray[0]; 
document.write("<b>Sample output saved as key-value pairs = </b><br/>"+ "<b>value is </b> " + samplelement.value + "<b>and label is </b> "+ samplelement.label + ' '); 
+0

+1感谢您的回答....但我说,我的字符串是巨大的....所以我会找为其他东西....仍然非常感谢答案... – Wazzzy 2013-03-01 04:16:33

1

我知道这是旧的,我猜你已经解决您的问题,但我刚刚做同样的事情,并给这个HTML和jQuery(只是因为):

<p><strong>Raw SF SelectOption data:</strong></p> 
<div id="sfData"></div> 
<p><strong>SF data converted to string with an array of objects using Regex:</strong></p> 
<div id="sfDataToStr"></div> 
<p><strong>SF data converted to proper array of Objects:</strong></p> 
<div id="strToObj"></div> 

而且这个JavaScript:

var sfData = 
    '[System.SelectOption[value="-- None --", label="-- None --", disabled="false"],' + 
    ' System.SelectOption[value="Special 1", label="Special 1", disabled="false"],' + 
    ' System.SelectOption[value="Special 2", label="Special 2", disabled="false"],' + 
    ' System.SelectOption[value="Special 3", label="Special 3", disabled="false"]]'; 
$(function(){ 
    $("#sfData"). 
     append(sfData). 
     prepend($("<p></p>", { 
      "text": "TYPE: " + typeof sfData})); 
    var sfDataToStr = sfData. 
     replace(/System.SelectOption\[(\w+)=/g, "{\"$1\":"). 
     replace(/\],\s?/g, "},"). 
     replace(/\",\s?(\w+)=/g, "\",\"$1\":"). 
     replace(/\]\]/g, "}]"); 
    $("#sfDataToStr"). 
     append(sfDataToStr). 
     prepend($("<p></p>", { 
      "text": "TYPE: " + typeof sfDataToStr})); 
    var strToObj = JSON.parse(sfDataToStr); 
    $("#strToObj"). 
     append(JSON.stringify(strToObj)). 
     prepend($("<p></p>", { 
      "text": "TYPE: " + typeof strToObj})); 
}); 

我设法获取数据在我很高兴使用的形式。

我猜你是呼应SalesForce公司SelectOption对象的数组,并希望在JavaScript中使用它们?我不确定是否有一种本地方式让SalesForce回显出适当的JSON,但这种方法适用于我的目的......希望它有帮助。

Working JSFiddle链接:http://jsfiddle.net/annoyingmouse/02668Ld4/