当前位置: 首页 > 面试题库 >

如何解决JSON.parse:字符串文字中的错误控制字符,在此代码中

赵晟睿
2023-03-14
问题内容

我是 JSON 文档的初学者,这是我的代码,因此请帮助我解决此错误。

{
   "_id" : "_design/utilisateur",
   "_rev" : "1-967a00dff5e02add41819138abb3284d",
   "views" : {
    "tous" : { 
        "map" : "function(doc){if (doc.role=='utilisateur') {emit (doc._id,        [['t0',doc.distancet0],['t1',doc.distancet1],['t2',doc.distancet2],['t3',doc.distancet3],    ['t4',doc.distancet4]])}}"
         },

    "3500" : {
        "map" : "function(doc) {if (doc.role=='utilisateur' &&     doc.distancet0<3500) {emit(doc._id,doc.distancet0)}}"
        },

        "distancetot" : {
                "map" : "function(doc) {var somme= Math.abs(doc.distancet0-    doc.distancet1); if(doc.role=='utilisateur'){ 
  emit(doc._id, somme);
}}"
                          }    
}

}

问题答案:

错误消息告诉您在字符串文字中包含控制字符,例如,字符代码8或10或13或任何小于32(空格)的字符。

该JSON定义告诉我们,你不能在字符串字面控制字符,则必须使用转义序列,如\b\r\n,或\uXXXX在那里XXXX是一个Unicode“码点”十六进制代码(字符)。

因此,例如,假设以下内容位于文件(或其他数据流)中:

{
    "property": "value with an invalid
control character in it"
}

那是无效的JSON,以字符串开头的字符串文字"value中至少包含一个控制字符(换行符,取决于操作系统,可能是一个或两个控制字符)。

这是我们将如何解决的方法:

{
    "property": "value with an valid\nescape sequence in it"
}

注意\n换行符曾经所在的位置。

您可以使用http://jsonlint.com来验证JSON,这很容易指出错误所在。

重新编辑:确实是导致问题的换行符:

"distancetot": {
    "map": "function(doc) {var somme= Math.abs(doc.distancet0-    doc.distancet1); if(doc.role=='utilisateur'){ 
Error is here -------------------------------------------------------------------------------------------------^

if(doc.role=='utilisateur'){跟上面的例子一样,后面的换行符是无效的控制字符。



 类似资料:
  • 问题内容: 在注意到一个应用程序倾向于由于不正确的字符串值错误而丢弃随机电子邮件之后,我经过了并切换了许多文本列以使用列字符集和默认列归类(),以便它可以接受它们。这修复了大多数错误,并使应用程序在遇到非拉丁电子邮件时也停止出现sql错误。 尽管如此,某些电子邮件仍然导致程序遇到不正确的字符串值错误: 内容列是使用列字符集和列排序规则的数据类型。在此列中没有可切换的标志。 请记住,除非绝对必要,否

  • 问题内容: 这是我从提要查找器URL(JSON编码)中作为字符串得到的: 我如何在php中使用json_decode()函数对其进行解码并获取最后一个数组元素(“提要”)?我尝试了以下代码,但没有运气 请帮忙 .. 问题答案: 请注意,使用第二个参数调用它时,已经返回一个数组。 更新: 作为JSON中的值 是一个对象数组,其内容为: 要获取URL,您必须使用或访问数组。 但这是数组的基本处理。也许

  • 问题内容: 我有一个来自UI的字符串,其中可能包含控制字符,并且我想删除除 回车符 , 换行符 和 制表 符之外的所有控制字符。 现在,我可以找到两种删除所有控制字符的方法: 1-使用番石榴: 2-使用正则表达式: 问题答案: 如果要删除其他字符或控制uni-code类别中的所有字符,可以执行以下操作 注意: 实际上,这实际上从字符串中除去了(\ u008f)Unicode字符,而不是转义的形式“

  • 问题内容: 我收到此错误: JSON.parse:意外字符 当我在firebug中运行以下语句时: 为什么会这样呢?JSON字符串对我来说似乎是正确的,我也使用JSHint对其进行了测试。在上述情况下,传递的对象是服务器响应,其内容类型设置为 问题答案: 您不是在解析字符串,而是在解析一个已经解析的对象:)

  • 问题内容: 前缀/ dir1 / dir2 / dir3 / dir4 / .. 如何在Java中从上述字符串中解析出值? 这里的前缀可以是: / usr / local / apache2 / resumes 问题答案: 如果要在字符处分割,该方法将起作用: 例如: 输出量 编辑 前缀为a 的情况,我们知道前缀是什么: 没有前缀的子字符串由方法组成。也就是说,然后通过运行。 输出: 重新编辑 如

  • 问题内容: 我已经阅读了有关该主题的几篇文章,但是所提供的代码(有时是片段)都没有帮助我解决转换这样的二进制字符串的简单问题: 插入文本字符串早安 我可能无法将我在stackoverflow中可用的链接中找到的代码片段放在一起。有人会这么友好地给我完整的代码吗?假设我有一个输入字符串(文本)来自我正在通过“ gettext()”访问的JTextarea,例如text = tTextarea.get