2014-11-22 97 views
0

我想添加一個JSON對象中的字符串...字符串特殊字符轉換爲JSON字符串化非法令牌

// this var can have special characters like [], commas, quotes, double quotes, accents, colon, semicolon, question marks, and maybe some other characters... Example* 
var textArticle = "Le Lorem Ipsum; est simplement. Du [faux] texte, employé: dans la composition, et la mise? En pagão avant impression!"; 

// this var I'll get from a date object 
var hourArticle = "18:20"; 

JSON.stringify({ "hour": hourArticle }), 

當我只有JSON裏面小時,它工作得很好,我可以使用:

var hourFinal = JSON.parse(json).hour; 

但是當我添加與textArticle的值的另一個入口,我得到「未捕獲的SyntaxError:意外的標記非法」:

JSON.stringify({ "text": textArticle, "hour": hourArticle }), 
var textFinal = JSON.parse(json).text; 
Error Uncaught SyntaxError: Unexpected token ILLEGAL 
任何令牌我試着用JSON.parse,例如

有什麼不對?我感謝任何幫助! 謝謝

更新#1: 我創建與科爾多瓦和jQuery移動web應用程序... JSON對象是一個本地通知插件:Kazter Local Notification ......我創建了通知傳球json stringify,並從插件的onTrigger函數返回json對象。但是,我使用JSON.parse(JSON)...... 時得到了非法令牌插件是這樣的

window.plugin.notification.local.add({ 
message: mainText, 
json: JSON.stringify({ "text": textArticle, "hour": hourArticle }), 
title: 'Title 1' 
}); 

謝謝你們

更新#2: 玉傢伙,我發現了什麼是怎麼回事,有whas無關插件或科爾多瓦,或什麼... textArticle VAR其從一個文本文件的隨機行。像這樣的值:

var filePath = "txt/datatexts.txt"; 
xmlhttp = new XMLHttpRequest(); 
xmlhttp.open("GET",filePath,false); 
xmlhttp.send(null); 
var fileContent = xmlhttp.responseText; 
var fileArray = fileContent.split('\n') 
var randLineNum = Math.floor(Math.random() * fileArray.length); 
var textRandom = fileArray[randLineNum]; 
var textRandomParts = textRandom.split('#'); 
var textArticleFull = textRandomParts[0] + " " + textRandomParts[1] + " " + textRandomParts[2]; 
var textArticle = textArticleFull; 

但解決textArticle值時,它的輸出是這樣的:

var textArticle = "Le Lorem Ipsum; est simplement. Du [faux] texte, employé: dans la composition, et la mise? En pagão avant impression!\r"; 

我不知道爲什麼,但它把「\ r」的值.. 的末尾,再拋出非法令牌.. 因此,所有我必須做的是:

var textArticleOK = textArticle.replace("\r", ""); 
json = JSON.stringify({ "text": textArticleOK, "hora": hourArticle}); 
var textArticleParse = JSON.parse(json).text; 

那麼......就是這樣......有些事我應該知道? 我只是不知道爲什麼會發生這種情況,因爲'\ r'在雙引號內....而且我用'\ n'按行分割文本文件。 另外這是我的文本文件看起來像:

  1. 文本part1的#文本第2部分#文第三部分
  2. 文本part1的#文本第2部分#文第三部分
  3. 文本part1的#文本第2部分#文第三部分

它沒有每行結尾處的'\ n',我必須添加那個嗎?

非常感謝!

+1

它爲我的作品:http://jsfiddle.net/vh5yakub/ – Oriol 2014-11-22 15:44:04

+0

感謝@Oriol尋找到的jsfiddle,效果真的不錯... 我不知道爲什麼...我正在用cordova和jquery mobile創建一個web應用程序... json對象是一個本地通知插件...也許它有一些長度限制...我無法弄清楚發生了什麼事情。 – Zembo 2014-11-22 16:00:02

回答

0

這個例子不拋出任何異常:

var textArticle = "Le Lorem Ipsum; est simplement. Du [faux] texte, employé: dans la composition, et la mise? En pagão avant impression!"; 
var hourArticle = "18:20"; 
var json = JSON.stringify({ "text": textArticle, "hour": hourArticle }); 
var textFinal = JSON.parse(json).text; 
+0

我看不到你提到的最後一個逗號......它在textArticle var中嗎?謝謝@亞歷山大 – Zembo 2014-11-22 16:01:09

+0

'JSON.stringify({「text」:textArticle,「hour」:hourArticle}),'以逗號結尾 – Alexander 2014-11-22 16:02:15

+0

哦,我明白了......我更新了帖子,你可以看看嗎?我不能這樣做,因爲json之後還有另一個參數... – Zembo 2014-11-22 16:10:29