对不起基本问题,但这对我来说似乎没有正确形成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;
它也不是真正的功能。
任何想法?我想我可以将整个事情视为一个字符串并拆分状态(部分,但我认为有一个更简单的解决方案,我只是缺少。
答案 0 :(得分:0)
绝对没有正确格式化JSON
。您正在显示的格式是一个函数调用(states( . . . )
),它正在使用" JSON
- 就像"对象的数组([ . . . ]
)({"code":"XX","name":"yyyyy"}
)(根据Pointy的评论,JSONP
)。
如果以字符串格式返回给你,你可以使用一些字符串操作(replace
或som类RegExp
匹配)来删除返回的函数部分和然后解析剩下的部分,然后你就可以像对待JSON
Feed那样对待它。
编辑: Pointy的评论是正确的JSONP
。如果您准备好处理JSONP
,那么这将是使用它的正确方法。如果没有,那么你可以按照我的建议修剪" JSONP
部分"并且能够使用它,就好像它是JSON
饲料。
这是关于JSON
和JSONP
之间差异的一个很好的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();});