Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/419.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 将特殊字符字符串化为json字符串非法标记_Javascript_Jquery_Json - Fatal编程技术网

Javascript 将特殊字符字符串化为json字符串非法标记

Javascript 将特殊字符字符串化为json字符串非法标记,javascript,jquery,json,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] tex

我试图在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 invalible”,例如:

JSON.stringify({ "text": textArticle, "hour": hourArticle }),
var textFinal = JSON.parse(json).text;
Error Uncaught SyntaxError: Unexpected token ILLEGAL
怎么了?谢谢你的帮助! 多谢各位

更新#1: 我正在用cordova和jquery mobile创建一个web应用程序。。。json对象用于本地通知插件:。。。我已经创建了传递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#文本部分2#文本部分3
  • 文本部分1#文本部分2#文本部分3
  • 文本部分1#文本部分2#文本部分3
  • 每行末尾没有“\n”,我必须添加吗


    非常感谢

    此示例不会引发任何异常:

    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;
    

    它对我很有用:谢谢@Oriol查看JSFIDLE,它真的很有用。。。我不知道为什么。。。我正在用cordova和jquery mobile创建一个web应用程序。。。json对象用于本地通知插件。。。也许它有一些长度限制。。。我就是搞不懂发生了什么。我看不到你提到的最后一个逗号。。。它在textArticle变量中吗?谢谢@Alexander
    JSON.stringify({“text”:textcarticle,“hour”:hourArticle}),
    以逗号结尾,我明白了。。。我已经更新了帖子,你能看一下吗?我不能这样做,因为json后面还有另一个参数。。。