使用 JSON.parse 方法解析数据时 JSON 中位置 0 错误的意外令牌'
Posted
技术标签:
【中文标题】使用 JSON.parse 方法解析数据时 JSON 中位置 0 错误的意外令牌\'【英文标题】:Unexpected token ' in JSON at position 0 error while parsing data using JSON.parse method使用 JSON.parse 方法解析数据时 JSON 中位置 0 错误的意外令牌' 【发布时间】:2018-07-09 03:56:30 【问题描述】:这是从 MVC 控制器发送的字符串
'[ "When": "", "Value": "NRMFS0131", "Text": "Achieve Montana" ]'
但是当我使用 JSON.parse 解析这个时,会抛出一个异常,说 Unexpected token ' in JSON at position 0 error
请注意,在 chrome 的控制台中解析工作完全正常
【问题讨论】:
'
字符不是 JSON,您需要删除它们。理想情况下来自 MVC 控制器发送的响应。
为什么要发送string
并解析它而不是只返回 json?
@StephenMuecke 从技术上讲,JSON 是一个被解析的字符串。只是OP需要解析这个以删除'
,然后再次解析为JSON :)
所以显示这个事务的服务器端的代码。这是高度相关的。
由于缺少重现问题的代码而投票关闭。
【参考方案1】:
开头和结尾的 '
字符不是 json 的一部分。
针对此类情况的一般提示 - 始终在此处验证您的 json https://jsonlint.com/。它会给你详细的错误信息。
【讨论】:
【参考方案2】:在我在 JSONLint/json 验证器中运行你的 json 之后,
这就是问题所在。
Error: Parse error on line 1:
'[ "When": "", "Val
^
Expecting 'STRING', 'NUMBER', 'NULL', 'TRUE', 'FALSE', '', '[', got 'undefined'
' 不是 JSON 的有效第一个字符,它应该是 'STRING', 'NUMBER', 'NULL', 'TRUE', 'FALSE', '', '['
您的问题可以通过按原样发送 JSON 来解决。由于您转换为任何其他类型,可能会出现 '。希望我有所帮助!
【讨论】:
嗯,这确定了问题。但这并不是真正的答案,除非您可以向 OP 展示如何修复它。 @RoryMcCrossan 添加了注意,他应该将 json 作为 json 而不是作为字符串发送。希望它能澄清他的问题。 你的编辑看起来很混乱 - JSON 是一个字符串,根据它的定义。 我似乎无法仅凭我的假设给出进一步的解决方案,我还需要知道后端代码才能提供一个好的解决方案,无论如何我会编辑字符串部分。【参考方案3】:stringify
你的json
在parse
之前。
var str = [
"When": "??",
"Value": "NRMFS0131",
"Text": "Achieve Montana"
];
var Result=JSON.stringify(str);
Result=JSON.parse(Result);
console.log(Result);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
【讨论】:
对象正在构造并从控制器发送,而不是在视图中构造 把你的 json 字符串像上面一样放在 str 上。 .以上是关于使用 JSON.parse 方法解析数据时 JSON 中位置 0 错误的意外令牌'的主要内容,如果未能解决你的问题,请参考以下文章