需要帮助解析从文件返回的此JSON

时间:2015-04-02 18:16:28

标签: javascript json angularjs

对不起基本问题,但这对我来说似乎没有正确形成JSON。我正在从一个返回此文件的文件中读取此结构:

states([{"code":"AL","name":"Alabama"},{"code":"AK","name":"Alaska"},{"code":"AZ","name":"Arizona"}])

当我对此进行JSON Lint时,它失败了 - 但它是我必须使用的,因为这是一个与我分开的服务器上的文件。

我希望它是var stores = [{stuff}],我还没有看到像上面那样保存的JSON,但是再次 - 我是noob

我正在使用Angular来阅读此内容,因此我的代码中包含了以下内容:

var directory = this;
directory.states = [];
$http.get('http://somesite.com/js/states.json').success(function(data){
    directory.states = data;
});

以下是我遇到问题的文件:http://massachusettswebdesigns.com/states.json

如果我将文件中的状态视为变量,我会得到一个未定义的错误:

var state = data.states;

它也不是真正的功能。

任何想法?我想我可以将整个事情视为一个字符串并拆分状态(部分,但我认为有一个更简单的解决方案,我只是缺少。

2 个答案:

答案 0 :(得分:0)

绝对没有正确格式化JSON。您正在显示的格式是一个函数调用(states( . . . )),它正在使用" JSON - 就像"对象的数组([ . . . ])({"code":"XX","name":"yyyyy"})(根据Pointy的评论,JSONP)。

如果以字符串格式返回给你,你可以使用一些字符串操作(replace或som类RegExp匹配)来删除返回的函数部分和然后解析剩下的部分,然后你就可以像对待JSON Feed那样对待它。

编辑: Pointy的评论是正确的JSONP。如果您准备好处理JSONP,那么这将是使用它的正确方法。如果没有,那么你可以按照我的建议修剪" JSONP部分"并且能够使用它,就好像它是JSON饲料。

这是关于JSONJSONP之间差异的一个很好的SO主题,供参考:What are the differences between JSON and JSONP?

答案 1 :(得分:-2)

使用开源项目jinqJs 取出外部状态()时,JSON对我有效。我同意它看起来像是一个函数调用。

你会这样做:

var result = jinqJs().from('http://someurl').select();

OR

异步电话

jinqJs().from('http://someurl', function(self) {result = self.select();});