为什么这个JSON无效?

为什么这个JSON无效?,json,validation,Json,Validation,我一直在尝试,但不明白为什么这个JSON是无效的(当我把它放在www.jsonlint.com上时),有人能帮忙吗?以下是JSON: [ { "title": "COFA NEW SOUTH WALES ", "img": "images/uni/cofa.png", "desc": "One of the Best University", "url": "http://127.0.0.1:8888/ilets/a

我一直在尝试,但不明白为什么这个JSON是无效的(当我把它放在www.jsonlint.com上时),有人能帮忙吗?以下是JSON:

    [
    {
        "title": "COFA NEW SOUTH WALES ",
        "img": "images/uni/cofa.png",
        "desc": "One of the Best University",
        "url": "http://127.0.0.1:8888/ilets/app/col.html"
    },
    {
        "title": "MIDDLESEX UNIVERSITY ",
        "img": "images/1339977840.jpg",
        "desc": "Well this is Testi",
        "url": "http://127.0.0.1:8888/ilets/app/MIDDLESEX UNIVERSITY.html"
    },
    {
        "title": "ROYAL COLLEGE OF ARTS ",
        "img": "images/uni/1339978144.png",
        "desc": "This is One of the best University",
        "url": "http://127.0.0.1:8888/ilets/app/ROYAL COLLEGE OF ARTS.html"
    },
    {
        "title": "UNIVERSITY OF SCOTLAND ",
        "img": "images/uni/1339996882.gif",
        "desc": "SCOTLAND OWNS THIS UNIVERSITY",
        "url": "http://127.0.0.1:8888/ilets/app/UNIVERSITY OF SCOTLAND.html"
    }
]
好吧,这很奇怪。JSON是在这里生成的:syedmujahidali.com/ilets/retrive.php从这里将其复制粘贴到JSONlint上,并表示无效

仅查看该页面中显示的响应文本(请参见为什么我会做出这样的区分),问题在于您的响应打开时会出现错误。BOM使JSON无效。我去了那个链接,做了一个全选和复制,然后将它粘贴到jsonlint.com中,得到了您得到的“无效令牌”错误。所以我将它粘贴到vim中,vim在文本开头向我展示了FE FF


因此,解决办法是找出PHP页面以BOM开头的原因,并解决这个问题。您不需要具有UTF-8的BOM。

您在问题中显示的JSON是有效的。另一方面,您在评论部分提到的脚本(
http://www.syedmujahidali.com/ilets/retrive.php
)返回HTML,而不是JSON,因此如果您尝试使用JSON解析器解析此脚本的结果,则显然会失败。以下是回应的样子:

<head>

<meta charset="UTF-8"></head><body onload="abc()">
<script>
function abc(){
document.getElementById('copy').innerHTML = document.getElementById('content').innerHTML;
var ab=  document.getElementById('content').innerHTML;
}
</script>

<div id="content" style="display:none;">


[{"title":"COFA NEW SOUTH WALES "  ,"img":"images/uni/cofa.png","desc":"One of the Best University","url":"http://127.0.0.1:8888/ilets/app/col.html"},<br>{"title":"MIDDLESEX UNIVERSITY "  ,"img":"images/1339977840.jpg","desc":"Well this is Testi","url":"http://127.0.0.1:8888/ilets/app/MIDDLESEX UNIVERSITY.html"},<br>{"title":"ROYAL COLLEGE OF ARTS "  ,"img":"images/uni/1339978144.png","desc":"This is One of the best University","url":"http://127.0.0.1:8888/ilets/app/ROYAL COLLEGE OF ARTS.html"},<br>{"title":"UNIVERSITY OF SCOTLAND "  ,"img":"images/uni/1339996882.gif","desc":"SCOTLAND OWNS THIS UNIVERSITY","url":"http://127.0.0.1:8888/ilets/app/UNIVERSITY OF SCOTLAND.html"}]</div>

<div id="copy">

</div>



</body>

函数abc(){
document.getElementById('copy').innerHTML=document.getElementById('content').innerHTML;
var ab=document.getElementById('content').innerHTML;
}
[{“title”:“COFA新南威尔士州”,“img”:“images/uni/COFA.png”,“desc”:“最好的大学之一”,“url”:”http://127.0.0.1:8888/ilets/app/col.html“},
{”title:“米德尔塞克斯大学”,“img:“images/133997840.jpg”,“desc:“这是Testi”,“url:”http://127.0.0.1:8888/ilets/app/MIDDLESEX UNIVERSITY.html“},
{“title”:“皇家艺术学院”、“img”:“images/uni/1339978144.png”、“desc”:“这是最好的大学之一”、“url”:”http://127.0.0.1:8888/ilets/app/ROYAL 艺术学院.html“},
{“title”:“苏格兰大学”,“img”:“images/uni/1339996882.gif”,“desc”:“苏格兰拥有这所大学”,“url”:http://127.0.0.1:8888/ilets/app/UNIVERSITY [http://www.SCOTLAND.html]
它似乎在JSONlint.com上对我进行了验证,我复制并粘贴了你的样本到JSONlint中,它的“Valid JSON”表示它是有效的。对我来说也是。你在通过任何JSON API解析这一点时有什么问题吗?也许没有问题,但UTF标记有一些问题?什么BOM?这个PHP脚本返回HTML,而不是JSON。如果P试图直接解析来自这个PHP脚本的响应,他将失败,因为脚本没有返回JSON作为全部。@DarinDimitrov:是的,如果他试图直接处理来自该页面的完整响应。但我认为他指的是它返回的文本,其中包含一个BOM表。您可能希望将HTML方面作为答案发布。编辑:啊,您已经发布了。:-) +1