2015-12-24 39 views
0

我想將我的json代碼串起來發送給MVC控制器。 但是,如果數據包含某些特殊字符,例如大於或小於符號<,則不起作用。如何在JSON中使用特殊字符stringify?

下面是示例代碼

function demo() 
{ 
    debugger 
    var demo = []; 
    demo.one = 'one'; 
    demo.two = '<just>' 
    var treeBinding = JSON.stringify(demo); 
    $.ajax({ 
     url: '/flow/demo', 
     type: "GET", 
     data: { dd: treeBinding }, 
     success: function (res) { 

     }, 
     error: function (error) { 
      alert(error) 
     } 
    }); 
} 

JSON.stringify返回在這種情況下一個空白陣列。 任何人都可以幫助我得到它的工作?

+1

這不是應該如何使用陣列。您可能需要像[[0]和[[1]]這樣的數字索引,或者您使用的是對象而不是像{{}一樣的數組。 – Xufox

+0

'var demo = {「one」:「one」,「two」:「」};' – Andreas

+0

您正在創建數組。你不能直接賦值。您需要推入元素 –

回答

2

與陣列的所有聲明首先是incorrect.That應該是一個對象,但任何情況下,你需要檢查對象和array.However之間的區別我認爲演示是用兩個關鍵/屬性,這將是一個對象發送到服務器。

所以聲明應該像這 -

 var demo = {}; 
    demo.one = 'one'; 
    demo.two = '<just>'; 

那麼你應該使用逃生 -

var treeBinding = encodeURIComponent(JSON.stringify(demo)); 
+0

感謝它的工作 –

+0

很高興聽到..請接受答案如果是這樣。 –

0

你可以嘗試這樣的事情:

function arrayToObjectString(arr) { 
 
    var returnSrt = "{"; 
 
    for (var key in arr) { 
 
    returnSrt += "\"" + key + "\" : \"" + arr[key] + "\""; 
 
    returnSrt += "," 
 
    } 
 
    returnSrt = returnSrt.substring(0, returnSrt.length - 1) + "}"; 
 

 
    return returnSrt; 
 
} 
 

 
function main() { 
 
    var demo = []; 
 
    demo.one = 'one'; 
 
    demo.two = '<just>' 
 

 
    console.log(JSON.stringify(demo)) 
 

 
    var resultStr = arrayToObjectString(demo); 
 
    
 
    console.log(resultStr) 
 
    console.log(JSON.parse(resultStr)); 
 
} 
 

 
main();