我需要轉換一個像這樣的字符串。 {0:{ Value:"0413-0415" }, 1:{ Value:"1-7800 LBO" }, 2:{ Value:"1-7804" }, 3:{ Value:"1-7805" }}
將自定義集合字符串轉換爲JSON格式
成爲需要此格式的Select2的JSON字符串。 [{ id: 0, text: 'enhancement', attr: 'abc' }
我想要用id替換Value並用文本替換描述如果說明存在。如果不是將值複製到文本以及ID。
所以上面就會變成 [{ id: "0413-0415", text: "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我目前在哪裏。 https://jsfiddle.net/pricejt/d681sfew/
您似乎在要求某人爲您編寫一些代碼。堆棧溢出是一個問答網站,而不是代碼寫入服務。請[see here](http://stackoverflow.com/help/how-to-ask)學習如何編寫有效的問題。 –
您的字符串類型是有效的對象字面值,但不是[JSON](http://json.org/)字符串,如果用引號括起來的話。 –
你已經用c#標記了這個問題,你如何生成這個字符串?找到一個輸出正確JSON的模塊應該不會太難。 – Thomas