将特殊字符串转换为json stringify非法令牌

时间:2014-11-22 15:39:04

标签: javascript jquery 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值的条目时,对于我尝试使用JSON.parse的任何标记,我得到“Uncaught SyntaxError:Unexpected token ILLEGAL”,例如:

JSON.stringify({ "text": textArticle, "hour": hourArticle }),
var textFinal = JSON.parse(json).text;
Error Uncaught SyntaxError: Unexpected token ILLEGAL

有什么问题?我感谢任何帮助! 谢谢

更新#1: 我正在使用cordova和jquery mobile创建一个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: 好的,我发现发生了什么事,那与插件或cordova无关,或者其他什么...... textArticle的值是一个文本文件的随机行..就像这样:

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. text part1#text part2#text part3
  2. text part1#text part2#text part3
  3. text part1#text part2#text part3
  4. 每行末尾没有'\ n',我是否必须添加?

    非常感谢!

1 个答案:

答案 0 :(得分: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;