【问题标题】:How to parse String with Javascript looks like object如何用 Javascript 解析字符串看起来像对象
【发布时间】:2013-02-28 16:52:08
【问题描述】:

我得到一个这样的字符串。
我做了 type of 并且得到了 string
字符串非常大,所以我发布了它的一部分。

[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"]]

我需要的是一个 Json 或它的数组。请帮忙。

【问题讨论】:

  • 这是选择元素的字符串表示吗?
  • 惊讶....是的,完全正确....
  • 你最初是怎么得到这个东西的?我们可以看看一些代码吗?
  • 我可以帮你处理这个字符串......它是项目的一部分......

标签: jquery json salesforce


【解决方案1】:

这是您要找的吗?
此代码实质上是将字符串转换为键值对数组。

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 + ' ');

【讨论】:

  • +1 感谢您的回答......但我说我的字符串很大......所以我会寻找其他东西......仍然非常感谢您的回答。 ..
【解决方案2】:

我知道这是旧的,我猜你已经解决了你的问题,但我只需要做一些类似的事情并给出这个 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,但这种方法适用于我的目的......希望它有所帮助。

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

【讨论】:

    猜你喜欢
    • 2010-10-28
    • 1970-01-01
    • 2017-02-14
    • 1970-01-01
    • 1970-01-01
    • 2017-03-24
    • 2013-05-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多