繁体   English   中英

获取JSON中的对象总数,但Javascript Object.keys()。length返回未定义

[英]Get total number of objects in JSON but Javascript Object.keys().length returns undefined

我正在尝试从REST服务从返回的JSON对象获取值。 当我尝试获取“行”或“记录”的数量(而不是键的数量Object.keys(json).length时,使用Object.keys(json).length时,我一直处于undefined状态。

我已经在这些帖子中查看并尝试了以下一些答案:

JavaScript对象的长度

获取Json对象上的项目总数?

这是我正在使用的代码:

        $.getJSON(finalURL, function(json) {
            console.log("json: " + json);
            console.log("json.length: " + json.length);
            var propertyNames = Object.keys(json).length;
            console.log("propertyNames.length: " + propertyNames.length);
            var jsonLength = propertyNames.length;
            console.log("jsonLength: " + jsonLength);
            if (isNaN(jsonLength)) {
                console.log(jsonLength + " is not a number");
            } else {
                console.log(jsonLength + " is a number");
            }
            if (jsonLength > 0) {
                console.log("jsonLength > 0");
            } else {
                console.log("jsonLength = 0");
            }
        });

这是返回的JSON:

{"id":1,"providerName":"Acme","providerID":"12343","providerLegacyID":"832940","contactName":"John Doe","contactEmail":"jdoe@this.eml","contactPhone":"3035551212","address1":"5999 Second Street","address2":"","city":"Denver","state":"CO","zip":"80203","providerKey":"0be32d8057924e718a8b6b4186254756","userKeys":null,"approved":null,"active":null,"createdBy":"Dan Zeller","createdByKey":"c6f4cf6a47a44092a3655420bd4a3f26","createdByRole":"ADMIN","createdDate":1517927130501,"updatedBy":null,"updatedByKey":null,"updatedByRole":null,"updatedDate":null,"removedBy":null,"removedByKey":null,"removedByRole":null,"removedByDate":null,"restoredBy":null,"restoredByKey":null,"restoredByRole":null,"restoredByDate":null}

因此,我期望上述JSON的JSON对象的长度为1。 如果返回更多,该数字将增加。

这是代码的输出:

json: [object Object]
json.length: undefined
propertyNames.length: undefined
jsonLength: undefined
undefined is not a number
jsonLength = 0

感谢任何帮助。

Object.keys(json)返回一个数组,因此其.length是一个数字。

您正在尝试获取数字的.length ,这没有任何意义。

你可以这样使用:

  var myObject = {"id":1,"providerName":"Acme","providerID":"12343","providerLegacyID":"832940","contactName":"John Doe","contactEmail":"jdoe@this.eml","contactPhone":"3035551212","address1":"5999 Second Street","address2":"","city":"Denver","state":"CO","zip":"80203","providerKey":"0be32d8057924e718a8b6b4186254756","userKeys":null,"approved":null,"active":null,"createdBy":"Dan Zeller","createdByKey":"c6f4cf6a47a44092a3655420bd4a3f26","createdByRole":"ADMIN","createdDate":1517927130501,"updatedBy":null,"updatedByKey":null,"updatedByRole":null,"updatedDate":null,"removedBy":null,"removedByKey":null,"removedByRole":null,"removedByDate":null,"restoredBy":null,"restoredByKey":null,"restoredByRole":null,"restoredByDate":null};

  var count = Object.keys(myObject).length;
  console.log(count);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM