Javascript 使用JQuery从本地url解析JSON

Javascript 使用JQuery从本地url解析JSON,javascript,json,jquery,getjson,Javascript,Json,Jquery,Getjson,我有一个本地url,可以在其中检索json文件。我还有一个简单的网站,它是使用JQuery构建的 我在许多网站上查找了关于如何检索json输入并解析它以便在我的网站上显示它的教程和示例代码。然而,我仍然不能让它工作,所以我们没有帮助 因此,作为最后的手段,我将向stackoverflow寻求您的帮助。我有很多java知识,但我对“web”开发相对较新,并且知道一些javascript的基础知识 这是我的url的示例输出: [ { "baken": "not impleme

我有一个本地url,可以在其中检索json文件。我还有一个简单的网站,它是使用JQuery构建的

我在许多网站上查找了关于如何检索json输入并解析它以便在我的网站上显示它的教程和示例代码。然而,我仍然不能让它工作,所以我们没有帮助

因此,作为最后的手段,我将向stackoverflow寻求您的帮助。我有很多java知识,但我对“web”开发相对较新,并且知道一些javascript的基础知识

这是我的url的示例输出:

[
    {
        "baken": "not implemented...",
        "deviceType": "Optimus 2X",
        "batteryLevel": "1.0",
        "gps": {
            "speed": 0,
            "Date": "TueNov0100: 34: 49CET2011",
            "Accuracy": 35,
            "longitude": {removed},
            "latitude": {removed},
            "Provider": "gps"
        },
        "deviceId": "4423"
    },
    {
        "baken": "notimplemented...",
        "deviceType": "iPhone",
        "batteryLevel": "30.0",
        "gps": {
            "speed": 0,
            "Date": "TueNov0116: 18: 51CET2011",
            "Accuracy": 65,
            "longitude": {removed},
            "latitude": {removed},
            "Provider": null
        },
        "deviceId": "4426"
    }
]

希望您能帮助我。

您的URL返回无效的json。尝试将它粘贴到jsonlint.com中并在那里进行验证,您就会明白我的意思。甚至stackoverflow上突出显示的代码也向您显示了问题所在。:)

编辑:要解析它,可以使用jQuery.parseJSON

 jQuery.parseJSON('{"foo": "goo"}');

请参见

最自然的方法是,一旦您已经进入页面,就允许jQuery为您发出AJAX调用。下面是一个例子:

    $.ready(function() {

         // put your other code for page initialization here

         // set up a global object, for namespacing issues, to hold your JSON.
         // this allows your to be a good "web" citizen, because you will create
         // one object in the global space that will house your objects without
         // clobbering other global objects from other scripts, e.g., jQuery
         // makes the global objects '$' and 'jQuery' 
         myObjects = {};

         // start JSON retrieval here
         $.getJSON('/path/to/json/file.json', function(data) {
             // 'data' contains your JSON.
             // do things with it here in the context of this function.
             // then add it to your global object for later use.
             myObjects.myJson = data; 
         });

    });

API文档是

您不需要解析json——这就是人们喜欢它的原因。它将成为本机JavaScript对象

例如,如果将结果放入名为
data
的变量中,则可以执行以下操作:

 data[0].deviceType // would be "Optimus 2x"
 data[0].gps.speed  // would be numeric 0

等等。

如果您运行的是本地web服务器,并且该服务器为网站和json文件提供服务,您只需执行以下操作:

$.getJSON('path/to/json/file.json', function(data) {
  document.write(data);
})
如果您只是使用文件而没有Web服务器,那么浏览器的源策略可能会出现问题,因为AJAX请求无法通过跨域发送,并且对于来自本地文件的请求,源域默认为“null”


如果您使用的是Chrome,您可以尝试使用
--允许从文件访问文件
参数进行开发。

那么JSON文件是否存储在web服务器上(jQuery站点所在地)?不清楚“本地URL”的确切含义。我的意思是请求URL是本地的。它是一个本地运行的文件,接受请求并以json格式返回响应。那么像“file://”URL吗?这可能有一些困难,因为浏览器开始考虑本地系统不值得信任,好像每个不同的“文件://”URL是一个单独的域。另外,如果您的实际网站是由真正的服务器(“http://”)提供的,那么您将被拒绝访问“文件:”URL。这只是一个例子,我的问题主要是关于如何解析。如果需要,可以使用其他json输出。但无论如何,还是要感谢我的项目合作伙伴,他负责处理输出部分:))编辑:我验证了我问题中的json输出,只是为了记录;)更好的json在OP=)中更新。然而,你仍然可以通过让你的浮动成为数字来改进它,例如“batteryLevel”:30.0,而不是“30.0”。遗憾的是,jQuery(默认情况下)需要的原生json有点严格,并且不能传递日期构造函数。有关我对此的调查,请参见此:。Ps:如果我的答案对你有用的话,请随意投票。与其他答案不同,我认为你面临的挑战是解析,而不是ajax。我想我说得不够清楚,但这是我的错误:)无论如何,我想我可以从这里解决它。谢谢你的帮助:)
$.getJSON('path/to/json/file.json', function(data) {
  document.write(data);
})