使用转义引号解析 JSON 时出错

2024-01-20

当我从浏览器调用 URL 时,我收到以下 json 对象,我希望其中没有数据。

"{\"data\":[], \"SkipToken\":\"\", \"top\":\"\"}"

然而,当我尝试用 javascript 调用它时,它给了我error Parsing Json message

dspservice.callService(URL, "GET", "", function (data) {
    var dataList = JSON.parse(data);
)};

在我不知道为什么突然停止工作并抛出错误之前,这段代码一直在工作。


您说服务器正在返回 JSON(省略引号):

{\"data\":[], \"SkipToken\":\"\", \"top\":\"\"}

这是无效的 JSON。 JSON 中围绕字符串和属性名称的引号应该not前面有一个反斜杠。 JSON 中的反斜杠严格用于插入双引号inside一个字符串。 (它也可以用于转义字符串中的其他字符,但这与这里无关。)

正确的 JSON 是:

{"data":[], "SkipToken":"", "top":""}

如果您的服务器返回此内容,它将正确解析。

这里的混乱以及其他发帖者的报告认为您的字符串应该可以工作,其原因在于在一个简单的测试中,我在控制台中输入了这个字符串:

var x = "{\"data\":[], \"SkipToken\":\"\", \"top\":\"\"}";

the JavaScript 字符串转义机制,这与 JSON 中转义符的使用完全不同,会产生一个带有值的字符串

{"data":[], "SkipToken":"", "top":""}

当然 JSON.parse 可以很好地处理。但是 Javascript 字符串转义适用于源代码中的字符串文字,而不是来自服务器的内容。

要修复服务器错误转义的 JSON,您有两种可能性。一种是告诉服务器人员他们不需要(也不能)在引号前添加反斜杠(引号除外)inside字符串)。然后一切都会正常。

另一种方法是在将其交给其他人之前撤消自己的转义JSON.parse。首先是一个简单的正则表达式,例如

data.replace(/\\"/g, '"')

as in

var dataList = JSON.parse(data.replace(/\\"/g, '"')

它可能需要额外的调整,具体取决于服务器人员如何转义字符串内的引号;他们正在发送吗\"\\"\",或者可能\"\\\"\"?

我无法解释为什么这段正在运行的代码突然停止运行。我最好的猜测是服务器端的更改开始转义双引号。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用转义引号解析 JSON 时出错 的相关文章

  • 如何提取 Backbone 集合的属性

    我想从 Backbone 集合创建一个特定属性值的数组 var days select this collection models function model return model attributes type session d
  • Mat select - 获取selectionChange的旧值

    我有一个项目 其中有一个包含以下内容的表单mat select选择器 每当用户更改输入时 我都会向用户显示一个对话框来确认此操作 现在 The selectionChange 通知值何时更改并将新值传递为 event 当用户取消对话框时 有
  • 来自不同级别的一对值根据邻居成员选择一个

    我正在尝试使用 jq 遍历对象数组并将其转换为 csv 我可以做一些选择和 csv 部分 但我正在努力解决的是如何获得Name每个对象的标签值 json 看起来像这样 Groups Instances InstanceType m5 xla
  • 裁剪响应式全宽图像

    我必须剪辑跨越整个宽度的图像 以下事情对我不起作用 剪辑 这需要绝对位置 因此块元素不会堆叠在下面 背景位置 缩放时无法正确剪辑 放大时剪辑的部分会增加 反之亦然 包装器 包装器高度取决于浏览器宽度 因此其值应该是动态的 我使用了 seti
  • 如何使用 JavaScript 或 jQuery 清除 Google Chrome、Mozilla Firefox 和 Safari 中的剪贴板数据

    我正在开发一个网站 我想在使用 JavaScript 或 jQuery 查看我的网站时按下打印屏幕按钮时清除剪贴板数据 谁能帮我解决这个问题 我在 Internet Explorer 中成功处理了这个问题 提前致谢 由于安全原因 您无法使用
  • ES6 在defineAsyncComponent 中命名导入

    我想异步加载我的网络应用程序的一些元素 这是旧的导入 import Popover PopoverButton PopoverPanel from headlessui vue export default components Popov
  • 如何使用 file:///F:/foldername 访问 ajax 中的本地文件夹?但它适用于 http://

    在这里 我使用以下代码使用 AJAX jQuery 动态创建文件名列表 window load function var fileExt csv document ready function ajax url file F foldern
  • 动画和过渡的组合无法正常工作

    我一直在尝试添加一些基本的 CSS3 动画 目标是在按钮的单击事件上切换类 并根据添加的类对 div 进行动画处理 该代码对于 Firefox 中切换的第一次迭代完美运行 但对于 Chrome 等其他浏览器以及 Firefox 中的下一次迭
  • 移动设备上的剩余悬停效果

    我一整天都在努力做这个JSFiddle http jsfiddle net gsamaras q2w4jjyt 4 也适用于手机 但我所有的尝试都没有效果 在桌面上 当用户将鼠标悬停在箭头上时 它会变成红色 在移动设备上 当用户触摸 为了单
  • 使用 JSONP 时出现“无效标签”?

    我的 JSONP 请求有问题 数据不会显示 Firebug 显示 无效标签 错误 我的 JavaScript ajax url link dataType jsonp beforeSend function xhr var base64 b
  • 为什么使用 MarkForCheck() 和 setTimeout?

    我对 ChangeDetectorRef 中的 MarkForCheck 方法有疑问 对于一种用法我必须使用this cd markForCheck 因为在控制台中我获取了值 但它没有在视图上更新 setTimeout gt this ch
  • xhr 响应 for 循环不起作用

    我有 xhr 和 for 循环 它的工作非常罕见 for var i 0 i lt this files length i var xhr new XMLHttpRequest xhr upload onprogress function
  • 无法使用 Excel JavaScript API 设置 NumberFormat

    我正在使用 Excel Javascript API 在搜索文档后 仍然找不到我想要实现的解决方案 因此 我想将所有内容设置为数字格式 文本 这样 Excel 的自动格式设置就不会与任何单元格的内容混淆 不会删除前导零或更改日期格式 文档建
  • Ace Editor 自动完成和多种语言

    如何为 Ace 编辑器创建自动完成功能以及如何突出显示 php 中的 html javascript 和 csshttp ace ajax org http ace ajax org
  • 以编程方式在 Highcharts 中使用缩放绘制矩形和线条

    我正在使用 Highcharts 进行一些编程绘图Highcharts Renderer http api highcharts com highcharts Renderer using path and rect 在下面的代码中 我手动
  • Web 文本编辑器中的 RTF 格式

    网络上是否有支持 RTF 格式文档输入的文本编辑器 我知道这对 webdev 来说有点奇怪 但我需要从数据库中读取 RTF 文档 并在基于 Web 的文本编辑器中对其进行编辑 然后将其存储回 RTF 中 在我在转换工具上投入太多资金之前 我
  • android中如何将字符串转换为unicode

    我正在解析一些unicodes from json to my android应用程序 API 给出unicodes像这样的图标 ue600 当我将这个unicode直接添加到textview like textview setText u
  • 如何比较 JavaScript 表格中的单元格并测试是否相等? indexOf 是如何工作的?

    我在 HTML 代码中创建了一个表格 它有 9 列和 13 行 它被 JavaScript 循环完全填满 该循环用几个数组中的人名填充它 但是 我想添加一个验证步骤 确保一行中没有两个单元格具有相同的值 并且每个单元格的值不会在其正下方的单
  • 如何在不接受焦点的元素上捕获键盘事件?

    我知道要处理输入字段中的键盘事件 您可以使用 input keyup function e var code e keyCode and 13 is the keyCode for Enter 但是 现在 我有一些div and li元素
  • iOS 上 Safari 中的 shift 键

    有没有办法在javascript中判断手机键盘上是否按下了shift键 并将其与大写锁定 按两次shift键 区分开来 一些事实 首先 让我们看一下有关 iOS 键盘的一些事实 我假设您已经知道了 当您进入键盘模式时 shift键始终处于激

随机推荐

  • Meteor - 使用集合中的文档渲染模板

    基本上 我只是想用以下内容渲染模板resultMongoDB find 调用返回的文档的属性 我已经开启自动订阅了 我有一个 html 模板
  • 如果我使用 AJAX,文件上传过程中的 HttpPostedFile 为 NULL

    我在我的 asp net MVC 项目中使用文件上传功能 它运行得很好 直到我开始在我的页面上使用一些 AJAX 功能 Ajax 页面上的 HttpPostedFile 始终为 NULL 如何在我的页面上调用ajax来解决这个问题 因为你无
  • 使用 nls() 进行非线性拟合在初始参数估计时给出奇异梯度矩阵。为什么?

    这是我第一次尝试在 R 中拟合非线性模型 所以请耐心等待 Problem 我试图理解为什么nls 给我这个错误 Error in nlsModel formula mf start wts singular gradient matrix
  • 如何在 Rust 中编写函数?

    我正在尝试编写一个由两个函数组成的函数 最初的设计非常简单 一个函数接受两个函数并返回一个组合函数 然后我可以将该函数与其他函数组合 因为 Rust 没有剩余参数 我遇到了用令人沮丧的无用编译器错误构建的墙 我的撰写功能 fn compos
  • PHP exec() vs system() vs passthru()

    有什么区别 每个功能是否有特定的情况或原因 如果是 您能举一些这些情况的例子吗 PHP net 说它们是用来执行外部程序的 参见参考资料 http php net manual en function exec php从我看到的例子来看 我
  • 多个dex文件定义了/BuildConfig,找不到原因:

    我正在使用新的 gradle 构建系统 但面临以下问题 UNEXPECTED TOP LEVEL EXCEPTION com android dex DexException Multiple dex files define Lcom k
  • 检查一个字符串是否与另一个字符串相似[重复]

    这个问题在这里已经有答案了 我做了一些研究 发现一些主题会检查一个字符串是否是字符串中的子字符串 并选择与指定字符串最接近的字符串 但是我如何检查一个字符串是否与另一个字符串相似并提供真 假反应 IE String 1 JAVA IS A
  • djangorest框架列表查询由于日期格式而自定义json数组结果响应

    我有这个 Django REST API 我想自定义 json 响应的列表查询结果 原因是日期格式和可能的其他格式 这是 Rest API 问题是 create at 我希望它的格式如下 Y m d H M 以下代码没有任何格式 它只是列出
  • 遛树,父母先行

    访问链接树的所有节点 所有节点都有对父节点和所有子节点的引用 根节点将 null 作为父节点 的最佳方法是什么 以便在其任何祖先之前不会访问任何节点 非递归的布朗尼点 伪代码 NodesToVisit some stack or some
  • 使用 Android Studio 0.4.0 的渲染问题

    在使用 Eclipse 一段时间后 我最近决定尝试一下 Android Studio 我的主要活动 xml 在 Eclipse 上渲染正常 但 Studio 似乎有问题 它在预览窗口中报告此情况 渲染问题 java lang StackOv
  • scala泛型函数返回类型

    我尝试编写一个具有通用返回类型的函数 但除非我强制转换返回类型 否则它不起作用 请看函数getSomething 下面我预计它无需铸造即可工作 我在这里可能做错了什么 trait Sup class Sub extends Sup def
  • 如何使用 jQuery 触发自定义事件?

    我将自定义事件处理程序附加到body在 jQuery 中ready method 随后我立即trigger自定义事件 但似乎什么也没有发生 function body on test function alert test triggere
  • 如何将外部JS文件加载到moodle中?

    如何将外部JS文件加载到moodle中 使用moodle api 即moodle库 在Moodle 2 0中我一直使用 PAGE gt requires gt js 首先 使 PAGE通过执行以下操作可用于您的代码 require once
  • Chisel 中的 <> 运算符是什么?

    Chisel 教程使用了看似 lt gt 运算符 对我来说完全陌生 它有什么作用 还有 它从哪里来 该运算符在其他 Scala 库甚至其他语言中是否有约定的含义 以下是 Chisel Generator Bootcamp 练习第 3 2 节
  • 注册时创建子域

    我正在建立一个网站 企业可以在其中注册自己的帐户 该帐户应位于http businessname example com http businessname example com 企业名称 每次都在变化 我想在 Windows 服务器 I
  • 身份验证模式=“表单”导致 WCF 端点出现错误

    我的 NET 4 0 Web 应用程序项目中有一个 WCF 端点 使用VS2010 WCF测试客户端 我可以正确连接到该服务 但是 当我使用该服务时 我收到一条通用错误消息 内容类型text html 响应消息的 charset UTF 8
  • 在 XDebug 会话中 cURL 到 self

    我正在使用 XDebug 在 Eclipse 中调试 PHP 应用程序 应用程序通过 cURL 调用自身内部的 HTTP API Current protocol server port URL http SERVER SERVER NAM
  • 为 Firefox 签署基于 XUL 的附加组件

    是否可以对基于 XUL 的 Firefox 附加组件进行签名 或者只能使用新的 SDK 进行签名 所有扩展 无论是Overlay https developer mozilla org en US Add ons Overlay Exten
  • Pylint 错误检查可以定制吗?

    我正在使用 pydev 我已经设置了 pylint 问题是 即使在评论中 pylint 也会报告警告 我希望禁用任何行或块注释内的任何类型的检查 另外 我希望遵循驼峰命名约定 而不是代码中变量和参数的下划线 有没有办法指定这样的规则 而不用
  • 使用转义引号解析 JSON 时出错

    当我从浏览器调用 URL 时 我收到以下 json 对象 我希望其中没有数据 data SkipToken top 然而 当我尝试用 javascript 调用它时 它给了我error Parsing Json message dspser