簡體   English   中英

如何在javascript中使用json值或在json對象中轉換簡單字符串?

[英]how to use json Value in javascript or convert simple string in json object?

var data = [
  {label: "a Organinzation",data: 1},
  {label: "b pvt Ltd.",data: 2},
  {label: "d Organization",data: 10},
  {label: "Completed Organization",data: 15},
  {label: "Running Organization",data: 34}
];

我的jsp頁面中有一個jqplot的圖表,它使用上述格式的數據。現在,我的問題是它在靜態數據下可以正常工作。 但是當我想包含一些動態數據時。 由於該數據變量無法解析所提供的字符串,因此顯示空白圖表。
正在生成與上述代碼段中指定的字符串相同的字符串,並包含以下內容

var total = rawdata.split(";");
var txt = null;

for (var i = 1; i < total.length - 1; i++) {
    if (i == 1) {
        txt = "{ label: \"" + total[i] + "\", data: " + total[i + 1] + "}";
    } else {
        txt = txt + ",  { label: \"" + total[i] + "\", data: " + total[i + 1] + "}";
    }
    i++;
}
alert(txt);

elem = $('#fl_3');

var data = [JSON.parse(txt)];

當我提醒txt變量時,它給了我以下模式,這與我最初給出的代碼段相同...

{ label: "Abc LTd.", data: 42},
{ label: "A org", data: 2},  
{ label: "B Org", data: 6},  
{ label: "c Org", data: 1},  
{ label: "dbc comp ltd", data: 1},  
{ label: "avc comp pvt. ltd", data: 1}

那為什么不能將其解析為json? 在我的瀏覽器中,出現以下錯誤:

Error: SyntaxError: JSON.parse: expected property name or '}'

如果我寫data=[txt]; ,什么也沒有出現。
如果我寫data = [JSON.parse(txt)]; 然后我得到了錯誤。

有人可以幫我嗎? 我該如何運行?

txt字符串包裝在括號內

var data = JSON.parse('[' + txt + ']');

這將為您提供對象數組。

您還必須將標簽用雙引號引起來,如@guypursey所述,請參閱JSFiddle。

var txt = '{ "label": "Abc LTd.", "data": 42},\
{ "label": "A org", "data": 2},\
{ "label": "B Org", "data": 6},\
{ "label": "c Org", "data": 1},\
{ "label": "dbc comp ltd", "data": 1},\
{ "label": "avc comp pvt. ltd", "data": 1}';

var data = JSON.parse('[' + txt + ']');
console.log(data);

為什么要先構建一個字符串,然后將其解析回對象(如果您已將數據放入數組中)? 也許你只需要重新格式化total莫名其妙。 不確定total組的結構。 玩這個:

var data = [];
for (var i = 0; i < total.length - 1; i = i + 2) {
    data.push({label: total[i], data: total[i + 1]});
}

注意:我在這里假設rawdata看起來像這樣的字符串:

"a Organinzation;1;b pvt Ltd.;2;Completed Organization;3";

嘗試將屬性名稱包裝在JSON標准中指定的雙引號中。 例如:

txt= '{ "label": "' + total[i] + '", "data": ' + total[i+1] + '}';

我不得不使用單引號將要連接的字符串部分包裝起來,因此必須在雙引號中使用反斜杠轉義。 只是不要忘了轉義所有單引號。

並且也不要忘記在數據數組的方括號周圍加上單引號並將其包括在解析中!

var data = JSON.parse('[' + txt +']');

感謝您的答復..但我的問題解決了以下

var data = eval(txt);

我不知道..它只需要這個...謝謝您的幫助..如果這是錯的,請糾正我

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM