如何在没有对象编号的情况下获取json对象?

时间:2015-06-23 08:43:20

标签: javascript jquery json rest

我有一个简单的json对象,它会在每个对象中吐出4个具有完全不同属性的项目。我已经使用4个对象显示json,这些对象称为meta.work_content,如下所示:

[Object, Object, Object, Object]

我可以在控制台中打开这些对象并看到如下对象:

0: Object
1: Object
2: Object
3: Object

我可以进一步进入每一个等等。在我的javascript中,我有一个简单的ajax请求获取具有以下设置的项目:

var getPosts = function() {

        $.ajax({
          url: '/wp-json/posts?type=case-studies',
          data: {
            filter: {
            'name': _last
            }
          },
          success: function ( dataS ) {
            //List some global variables here to fetch post data
            // We use base as our global object to find resources we need
            var base = dataS[0];
            console.log(base);
            var postContent = base.content;
            var postTitle = base.title;
            // Main Image ACF object
            var featuredImage = base.meta.main_image;
            // Gallery ACF object
            var nodes = base.meta.work_content;
            // output ACF objects
            console.log(nodes);
          },
          cache: false
        });

    };

现在这里有一个棘手的部分,我想访问每个meta.work_content对象但不使用它来执行base.meta.work_content[0], base.meta.work_content[1]等,因为每个项目顺序都会改变,因此这些数字将无关紧要。

这些项目需要根据其对象名称而不是[0],[1],[2]进行访问,因为它不起作用。

干杯

2 个答案:

答案 0 :(得分:1)

尝试使用以下内容:

$(document).ready(function() {
    var objects = {
        // Key `object1` which contains sertain properties
        object1: { name: "Name" },

        // Key `object2` which contains sertain properties
        object2: { firstname: "Fname" }
    };

    alert(objects.object1.name); // eg Name
    alert(objects.object2.firstname); // eg Fname

    // Check if object exists
    if(objects.object1)
    {
        // Do something with the properties of object1
    }
});

<强>更新

使用您的示例:

success: function ( dataS ) {
    var nodes = dataS; // Eg nodes is like objects in my example above

    // Object 1
    var base = nodes.object1; // Eg object1 is the name of your object
    var postContent = base.content;
    var postTitle = base.title;
    var featuredImage = base.meta.main_image;
},

答案 1 :(得分:0)

  1. 创建一个对象。
  2. 循环遍历数组
  3. 获取数组中每个成员的名称
  4. 使用与您刚刚获得的名称相同的属性名称将每个成员复制到对象中
  5. 然后只使用对象而不是数组。

    如果两个对象具有相同的名称(如果可能的话),您可能想要考虑应该发生什么。