Javascript 将自定义集合字符串转换为JSON格式

Javascript 将自定义集合字符串转换为JSON格式,javascript,json,Javascript,Json,我需要像这样转换一个字符串。 {0:{Value:“0413-0415”},1:{Value:“1-7800 LBO”},2:{Value:“1-7804”},3:{Value:“1-7805”} 是Select2的JSON字符串,需要此格式。 [{id:0,文本:“增强”,属性:“abc”} 我想用id替换值,如果描述存在,则用文本替换描述。如果不存在,则将值复制到文本以及id 因此,上述内容将变成 [{id:“0413-0415”,文本:“0413-0415”}] 我怎样才能开始用javas

我需要像这样转换一个字符串。
{0:{Value:“0413-0415”},1:{Value:“1-7800 LBO”},2:{Value:“1-7804”},3:{Value:“1-7805”}

是Select2的JSON字符串,需要此格式。
[{id:0,文本:“增强”,属性:“abc”}

我想用id替换值,如果描述存在,则用文本替换描述。如果不存在,则将值复制到文本以及id

因此,上述内容将变成
[{id:“0413-0415”,文本:“0413-0415”}]

我怎样才能开始用javascript写这篇文章呢

通过编写这个函数,我可以让它以我想要的格式返回字符串

function parseData(data)
{
    data = data.replace('{','[');
    data = data.replace(/,$/,"") + "]";
var re = /\{.*?\}/g;
var index, len;
var m = data.match(re);

correctedData = '[';
for (var el in m) {

    m[el] = m[el].replace('Value','id');
    m[el] = m[el].replace('Description','text');
    if(!m[el].includes("text:"))
    {
    var n = m[el].lastIndexOf('}') -1;
    m[el] = m[el].substring(0,n) + ', ' + m[el].replace('{','').replace('id','text'); 
    }
    correctedData = correctedData + m[el] + ', '

}
correctedData = correctedData.trim().replace(/,$/, "");
correctedData = correctedData.replace(/"/g, "'");
correctedData = correctedData + ']';

return correctedData;
}
但是我知道这是返回一个字符串,使用JSON.parse将不起作用,因为它表示它不是有效的JSON。我查看了Select2,并以它们的示例为例,该示例也不是有效的JSON。它只是一个对象数组。如何让javascript将其视为数组而不是字符串


JSFiddle我目前所在的位置。

您可以使用正则表达式并获取新对象的部分,这些部分可以以所需的格式收集在数组中

var regex=/(\d+):{Value:([^“]*)”/g,
str={0:{Value:'0413-0415},1:{Value:'1-7800 LBO},2:{Value:'1-7804},3:{Value:'1-7805},
M
数据=[];
while((m=regex.exec(str))!==null){
//这是避免具有零宽度匹配的无限循环所必需的
if(m.index==regex.lastIndex){
regex.lastIndex++;
}
如果(m.长度>=2){
push({id:m[1],text:m[2]});
}
}
console.log(数据);

。作为控制台包装器{max height:100%!important;top:0;}
我终于能够让它工作了。最后的结果在这里。


您似乎在要求他人为您编写一些代码。Stack Overflow是一个问答网站,而不是一个代码编写服务。请学习如何编写有效的问题。您的字符串类型是有效的对象文字,但如果用引号括起来,则不是字符串。您已将此问题标记为c#,如何生成此字符串?I找到一个输出正确JSON的模块应该不会太难。我已经标记了C,因为我可以在服务器端的数据到达UI端之前用C格式化。或者我可以在clent端用javascript格式化。我还更新了我的答案,加入了我编写的函数,以尝试格式化我需要的数据。为什么不选择一个更好的数据结构呢re哪一个可以直接用于?谢谢,我在提交最终结果之前没有刷新页面。
function parseData(data)
{
var correctedData = [];
data = data.replace('{','[');
data = data.replace(/,$/,"") + "]";
var re = /\{.*?\}/g;
var index, len;
var m = data.match(re);

for (var el in m) {

    m[el] = m[el].replace('Value','"id"');
    m[el] = m[el].replace('Description','"text"');
    if(!m[el].includes("text:"))
    {
    var n = m[el].lastIndexOf('}') -1;
    m[el] = m[el].substring(0,n) + ', ' + m[el].replace('{','').replace('id','text'); 
    }
    correctedData.push($.parseJSON(m[el]));

}

return correctedData;
}