我使用$.getJSON
和$.each
来调用JSON端点并检索数据。当我调用数据时,我把它放在一个对象中,然后在控制台中检查它。但是,当我检查控制台时,只有一个条目。
为什么只返回一个条目?我做错了什么?
JavaScript的:
$(document).ready(function() {
var url =
'https://data.montgomerycountymd.gov/resource/housing-code-enforcement.json?street_number=9903';
var myJson = {};
$.getJSON(url, function(data) {
$.each(data, function(i, field) {
myJson = data;
});
console.log(myJson);
});
});
答案 0 :(得分:2)
看到每个人都在重复自己的想法。
正如@RoyMcCrosan所说,您的数据值是一个数组,但是您的myJson
变量是一个对象。你做的是循环遍历数组,将该数组中的每个单元格放入myJson
变量(这里是重要的位),覆盖它之前的值。所以你最终只得到数组中的最后一个值。
现在不知道你想对数据做什么,我们真的可以说你应该做什么,但这里有一些常见的情况:
如果您只是想复制数据并使用它,那么作为一个数组只需废弃$.each
var myJson = [];
$.getJSON(url, function(data) {
myJson = data;
console.log(myJson);
});
如果要将数据映射到最终的数组,但格式不同:
var myJson = [];
$.getJSON(url, function(data) {
myJson = data.map(function (d) {
return {}; //Some modified object
});
console.log(myJson);
});
如果要迭代数组并从每个对象中提取属性以添加myJson
变量;
var myJson = {};
$.getJSON(url, function(data) {
data.forEach(function (d) {
//Some logic for figuring property name.
var i = 'FieldName';
myJson[i] = d[i];
});
console.log(myJson);
});
最后,data
是一个使用本地循环方法的数组,例如.forEach
或for
循环。它们会比$.each
更快。从技术上讲,myJson
不是JSON本身就是一个JavaScript对象。
答案 1 :(得分:0)
$(document).ready(function() {
var url =
'https://data.montgomerycountymd.gov/resource/housing-code-enforcement.json?street_number=9903';
var myJson = {};
$.getJSON(url, function(data) {
$.each(data, function(i, field) {
myJson = data;
console.log(myJson);
});
});
});
答案 2 :(得分:0)
您需要在每次迭代中移动console.log
语句,但请注意,您的请求仅返回一个JSON文档,以便开始:
var url =
'https://data.montgomerycountymd.gov/resource/housing-code-enforcement.json?street_number=9903';
var myJson = {};
$.getJSON(url, function(data) {
$.each(data, function(i, field) {
myJson = data;
document.write(JSON.stringify(myJson, undefined, 2)+'<br>')
});
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>