这是W3C的公共bugzilla错误跟踪程序的存档快照,该程序于2019年4月退役。请参阅主页了解更多详细信息。
你好,我一直在尝试解析验证器的JSON输出,有三个解析器在两个平台上都失败了(asp.net 2.0和php(5.2.9)builtin JSON_decode函数)。进行以下修改后,解析器成功了。我认为有两个单独的逗号问题(基于http://www.json.org/)以下为:1) 数组的最后一个元素(即“解释”:“blah”)后面不应该有注释。2) 单个“消息”之间应使用逗号,即。“消息”:[{“name”:“param”,“name2”:“param2”}, {“name”:“param”,“name2”:“param2”} ]<---SNIP-基于URL(以上)的验证器当前输出失败--->{“url”:“http://www.gb.co.uk/gbgroup/gb-news",“消息”:[{“type”:“错误”,“lastLine”:“317”,“最后一列”:24,“message”:“元素“embed”的结束标记未打开”,“messageid”:79,“解释”:“解释”,}{“type”:“错误”,“lastLine”:“317”,“最后一列”:44,“message”:“属性\”pluginspage\“不是有效属性”,“messageid”:108,“解释”:“解释等等”,}],“来源”:{“编码”:“uft-8”}}<---/SNIP--><---SNIP-删除解释逗号并在消息之间添加逗号会解析--->{“url”:“http://www.gb.co.uk/gbgroup/gb-news",“消息”:[{“type”:“错误”,“lastLine”:“317”,“最后一列”:24,“message”:“元素“embed”的结束标记未打开”,“messageid”:79,“解释”:“解释”}, {“type”:“错误”,“lastLine”:“317”,“最后一列”:44,“message”:“属性\”pluginspage\“不是有效属性”,“messageid”:108,“解释”:“解释”}],“来源”:{“编码”:“uft-8”}}<---/SNIP-->php 5.2.9要解析的代码:<?php(电话)//代码失败:$jsonStr=文件获取内容('http://validator.w3.org/check?uri=http%3A%2F%2Fwww.gb.co.uk%2Fgbgroup%2Fgb-新闻输出=json');echo$jsonStr//输出文件$jsonObj=json_decode($jsonStr);print_r($jsonObj)//无输出//代码在没有消息输出时工作:$jsonStr=文件获取内容('http://validator.w3.org/check?uri=http%3A%2F%2Fwww.gb.co.uk%2F&output=json');$jsonObj=json_decode($jsonStr);print_r($jsonObj)//显示对象-此页面没有关联的消息/*文件检查是从第一个无效页面输出的,保存后再修改*解释字段后没有逗号,并且确实有逗号*消息之间:[{…},{…{]块*/$jsonStr=文件获取内容('check');echo$jsonStr//输出文件$jsonObj=json_decode($jsonStr);print_r($jsonObj)//无输出?>那么,我有没有发现或出现问题,或者我需要更少的咖啡因和更多的睡眠?谢谢,保罗
你说得很对。除了这两个问题之外,JSON转义“msg”和“explain”值也是不正确的。所有这些现在都已在CVS中修复,应该可以在以下位置进行测试http://qa-dev.w3.org/wmvs/HEAD/很快。
许多错误都已修复,但不幸的是,仍有一些错误(某些XML解析错误中的lastColumn编号无效),这显然是由于validator.w3.org生产盒上的旧(ish)XML::LibXML造成的。CVS正在等待下一个版本。
(答复评论#2)>修复了许多错误,但遗憾的是,仍有一些错误(lastColumn无效>一些XML解析错误中的数字),这显然是由于旧的(ish)>validator.w3.org生产盒上的XML::LibXML。CVS正在等待解决方案>用于下一版本。安装了较新的libxml并传递了示例json输出http://www.jsonlint.com/我还用Ville的最新版本升级了验证器检查。
谢谢,结束。