未捕获的语法错误:意外的标记o:简单的JSON解析器不工作
Uncaught SyntaxError: Unexpected token o : Simple JSON parser not working
有人能看到这个简单的JSON解析器出了什么问题吗?(JSFiddle-Link)
我在控制台上收到一个错误,上面写着Uncaught SyntaxError: Unexpected token o
var a = document.getElementById('a');
var json = {
type: "cow",
sound: "moo",
colors: ["black", "white", "brown"],
feed: {
types: ["hay", "grass"],
consistency: "wet"
}
};
var parsed = JSON.parse(json);
//called with every property and it's value
function process(key,value) {
console.log(key + " : " + value);
}
function traverse(o,func) {
for (var i in o) {
func.apply(this,[i,o[i]]);
if (o[i] !== null && typeof(o[i])=="object") {
//going on step down in the object tree!!
traverse(o[i],func);
}
}
}
//that's all... no magic, no bloated framework
traverse(json,process);
您不需要进行任何解析!您的数据已经在JavaScript对象中,而不是JSON字符串。
这通常是一个混淆-JSON是一个字符串,表示数据。JavaScript对象是JS存储的实际数据。
您的json
不是JSON,它是对=
右侧的对象初始化程序定义的对象的引用。看不到JSON。JSON是一种文本,用于数据交换的非源代码表示法。没有理由分析你所拥有的;JavaScript引擎已经解析了它:http://jsfiddle.net/m36n6zoj/2/
您得到错误的原因是JSON.parse
将其第一个参数强制转换为字符串(因为它用于解析JSON,JSON是文本的,因此在JavaScript代码中保存在字符串中)。如果你取一个像json
所指的一般对象,并将其转换为字符串,那么你就得到了"[object Object]"
。所以你在做这个:
JSON.parse("[object Object]")
对于JSON解析器来说,这看起来像是一个数组([
)的开头,后面跟着字母o
。字母o
在JSON中的该位置无效,因此您会得到错误。
当然,如果你真的想使用JSON(也许你通常会通过ajax或其他方式加载json
,这只是测试代码),你可以:http://jsfiddle.net/m36n6zoj/3/
var a = document.getElementById('a');
var json =
'{' +
' "type": "cow",' +
' "sound": "moo",' +
' "colors": ["black", "white", "brown"],' +
' "feed": {' +
' "types": ["hay", "grass"],' +
' "consistency": "wet"' +
' }' +
'}';
var parsed = JSON.parse(json);
//called with every property and it's value
function process(key,value) {
console.log(key + " : " + value);
}
function traverse(o,func) {
for (var i in o) {
func.apply(this,[i,o[i]]);
if (o[i] !== null && typeof(o[i])=="object") {
//going on step down in the object tree!!
traverse(o[i],func);
}
}
}
//that's all... no magic, no bloated framework
traverse(parsed,process);
我认为您有错误的json格式,您需要添加像这样的双引号键
"type": "cow"
这不是一个json对象,它是您提供的javascript对象,因此它不会被解析,如果您希望它是json,请使用字符串函数而不是
- 如何使用 json 返回简单数据
- 简单的JSON.parse错误
- 为什么JSON.parse()在尝试解析一个简单的JSON对象时抛出Uncaught SyntaxError:意外的令牌
- 我如何用jquery读取简单的json结果,以及如何发布新的结果
- 尝试将请求简单地PUT到Node.js中的JSON文件
- 带有大型JSON的简单ngTable在单元格中不显示任何数据
- Kendo Grid:如何对绑定到一个简单json对象的列进行排序(和过滤)
- 用谷歌图表json数据绘制简单的折线图,日期在x轴上
- 简单的jQuery AJAX JSON调用
- 如何在 angularjs 中的简单获取请求 json 之后添加事件侦听器
- 如何检查Jquery数据是JSON形式还是简单的HTML
- 简单的 JSON 代码不起作用
- 无法从我的简单 nodejs 服务器获得正确的 json 响应
- 为我的网站使用Facebook API JSON的最简单方法(哪种语言以及如何语法)
- 读取 API 的简单 json
- 创建 AJAX 调用以显示任何简单的键/值 JSON
- js,使 JSON 对象成为字符串 - 简单的方法
- 不能用jquery发送简单的ajax请求来获取json文件
- 我得到了一个“;意外的令牌“;尝试对简单对象执行JSON.parse时出错
- 读取/写入简单标记项目根目录中的JSON文件