2014-10-11 83 views
1

我試圖創建某種類型的json請求/響應模擬器。它是一個與外部API進行通信的nodejs應用程序。從textarea解析json到api調用

我有一個文本,其中一個可以進入的JSON代碼片段如

someJson = JSON.stringify({ 
    "z": { 
      "test": "....." 
    }, 
    "v": { 
      "test2": "......" 
    } 
}); 

,並提交形式,再上崗到後端,然後調用與數據的外部API。

如何將此文本從textarea轉換爲對象然後我可以運行JSON.stringify?通過在文本上運行stringify,它會添加反斜槓並且不會正確刪除空格。即使我要刪除反斜槓和空格,它仍然是一個字符串,而外部API是非常嚴格的。

更新:

添加的jsfiddle

http://jsfiddle.net/b5drLnnq/1/

的問題是,有可能是有空格或空白的有效數據,但它會在刪除空白的過程中得到去除或從對象的其餘部分添加反斜槓。

+0

那麼他們進入JSON,還是他們進入Javascript?他們進入 – lonesomeday 2014-10-11 07:38:41

+0

JSON作爲文本 – archytect 2014-10-11 21:05:34

回答

0

使用正則表達式來獲得括號,即JSON.stringify()之間的文本:

var textAreaText = $('#textarea_id').val(); 
var rgx = /\(([^)]+)\)/; 
var match = textAreaText.match(rgx); 

var someJson = JSON.stringify(match[1]); 

編輯:你想

var textAreaText = $('#txtArea').val(); 
//changed regex to match braces   
var rgx = /\{([^)]+)\}/;   
    var match = textAreaText.match(rgx); 
//match is an array 
jsonmatch = match[1]; 
jsonmatch = jsonmatch.replace(/(\r\n|\n|\r|\t|)/gm,""); 
//replace lost braces 
jsonstr = JSON.stringify('{'+jsonmatch+'}'); 

的jsfiddle變化:http://jsfiddle.net/sameersemna/ofjpLx57/2/

+0

我得到一個空值 http://jsfiddle.net/b5drLnnq/1/ 一兩件事爲好,有可能會像一個段落會包含空格的實際數據,但這種方法會從中刪除所有的空格,而不是從textarea的空格? – archytect 2014-10-11 16:05:45

+0

編輯你的小提琴:http://jsfiddle.net/sameersemna/ofjpLx57/1/ – 2014-10-11 16:15:12

+0

嗨薩米爾,你編輯的版本只是回送與\ n和\ t的json obj,並返回作爲字符串開頭「。我得到這個 { 「詞彙表」:{ 「稱號」: 「例如詞彙表」, 「GlossDiv」: 與 「{\ n \」 詞彙表\ 「:{\ n \」 稱號\「:\ 「example glossary \」,\ n \ t \ t \「GlossDiv \」: – archytect 2014-10-11 17:11:15

0

掌握該地區的文本$(<your selector).val()會給你的文字。你可以用自己的函數清理文本,並將其分配給一個對象並對其進行字符串化。

+0

Sameer舉了一個很好的例子。 – Barry 2014-10-11 07:43:38