我遇到了将hello.json中的json数据解析为当前html文件的问题。
如何从hello.json获取投资者,事件和价格数据到三个单独的数组。
http://compliantbox.com/mobile/optionsedge/hi.html
请帮帮我!!!
这是我的HTML代码:
<html>
<head>
<script src="http://code.jquery.com/jquery-1.4.4.js"></script>
</head>
<body>
<script>
$.getJSON("http://compliantbox.com/mobile/optionsedge/hello.json?jsoncallback=?",
{},
function(data) { alert(data); $.each(data.items, function(i,item){ alert(); });
});
</script>
</body>
</html>
这是我的json代码:
{ "data":
{
"current_condition":[{
"investors": [{"active"},{"agressive"},{"conservative"},{"day trader"},{"very active"}],
"events": [{"3 months"},{"weekly"},{"monthly"},{"leaps"},{"heaps"}],
"price": [{"4"},{"3"},{"9"},{"5"},{"2"}]
} ] }}
答案 0 :(得分:6)
更新3 :我刚看了你的链接页面(总是将相关代码复制到问题本身中),这就是你的问题:
$.each(data.items, function(i,item){
$("<html/>").attr("src", item.event);
if ( i == 3 ) return true;
});
结果对象中没有data.items
反序列化您指向的(现在有效的)JSON。根本没有items
。您的JSON描述了一个具有一个属性data
的对象,该属性又具有属性current_conditions
,该属性是一个包含一个条目的数组,一个具有属性investors
的对象,{{1} }和events
。请参阅更新2中的代码,了解如何与其进行交互。
更新2 :如果您更改JSON以使其有效,则jQuery将起作用。我的意思是,成千上万的网站每天使用这个... Live example,您的数据会被按下以使其有效。
更新:现在您已经发布了JSON,我们可以看到它无效。查看JSON网站和JSONlint工具。您的price
,investors
和events
数组都包含price
形式的条目,这是一个无效的对象条目。
原始答案:
如果你正在使用jQuery的ajax
函数(或getJSON
或其他一个包装器),那么应该在你看到它时解析它。如果您必须自己解析JSON字符串,请使用parseJSON
。详细说明:
{"active"}
及其包装扩展ajax
事情:如果你回来一个字符串并期待一个对象(例如,解析JSON的结果),请确保服务器返回正确的内容类型(“应用程序” / JSON“)。如果您无法控制服务器并且发送回错误的内容类型,则可以通过ajax
ajax
选项覆盖服务器。
如果它不起作用,您可能需要检查 - JSON真的是valid JSON吗?因为那里有很多不完全JSON。例如,这是有效的JSON:
dataType
这是不:
{
"foo": 1,
"bar": "x"
}
严格的解析器可能会拒绝后者,因为它无效(以几种不同的方式)。
示例 - 正常,服务器配置正确的版本:
{
foo: 1,
bar: 'x'
}
示例 - 强制数据类型:
$.ajax({
url: "yoururl",
success: function(data) {
// Here, `data` is already an object if the response was
// JSON and the server gave the correct content-type
}
});
或
$.ajax({
url: "yoururl",
dataType: "json", // <== The new bit
success: function(data) {
// Here, `data` is already an object if the response was
// parseable JSON
}
});
$.getJSON("yoururl", function(data) {
// Here, `data` is already an object if the response was
// parseable JSON
});
答案 1 :(得分:1)
您的JSON无效。
http://compliantbox.com/mobile/optionsedge/hello.json?jsoncallback=?
这就是解析无效的原因。
正如@Skilldrick在问题评论中指出的那样,你应该在做AJAX时检查控制台并且它不能正常工作;这样做会显示语法错误异常。
答案 2 :(得分:0)
根据您喜欢的页面和随后调用的JSON文件,我会说这可以满足您的需求:
function(data) {
var lists = data['data']['current_condition'][0];
var investors = lists['investors'],
events = lists['events'],
price = lists['price'];
}