从Coldfusion中的数组中检索元素

时间:2013-08-31 17:46:32

标签: coldfusion

我从disqus.com API获得以下结构返回,我只是不知道如何使用Coldfusion仅以红色检索以下“id”值。

enter image description here

这是返回的完整数组。

 {
  "cursor":{
    "prev":null,
    "hasNext":false,
    "next":"1213061503000000:1:0",
    "hasPrev":false,
    "total":null,
    "id":"1213061503000000:1:0",
    "more":false
  },
  "code":0,
  "response":[
    {
      "category":"1",
      "reactions":0,
      "identifiers":[],
      "forum":"bobross",
      "title":"Donkeys live a long time",
      "dislikes":0,
      "isDeleted":false,
      "author":"1",
      "userScore":0,
      "id":"2",
      "isClosed":false,
      "posts":0,
      "link":null,
      "likes":0,
      "message":"\"Donkeys live a long time. None of you have ever seen a dead donkey.\"",
      "ipAddress":"127.0.0.1",
      "slug":"donkeys_live_a_long_time",
      "createdAt":"2008-06-10T02:31:43"
    },
    {
      "category":"1",
      "reactions":0,
      "identifiers":[
        "my-identifier"
      ],
      "forum":"bobross",
      "title":"Happy Accidents",
      "dislikes":0,
      "isDeleted":false,
      "author":"1",
      "userScore":0,
      "id":"1",
      "isClosed":false,
      "posts":76,
      "link":null,
      "likes":0,
      "message":"\"If you've painted before you know that we don't make mistakes -- we have happy accidents.\"",
      "ipAddress":"127.0.0.1",
      "slug":"happy_accidents",
      "createdAt":"2008-06-10T01:31:43"
    }
  ]
}

1 个答案:

答案 0 :(得分:6)

嗯:首先,这是一个JSON数据包而不是数组,因此您需要通过反序列化将其转换为CFML数据结构,例如:

data = deserializeJson(jsonPacket);

然后你将拥有一个本机CFML结构(一个数组......数组是结构中的一个值)。

从那里,您将使用结构/数组表示法或结构函数/等以通常的CFML结构方式访问任何给定元素。

要直接指出你指出的项目,它将是(鉴于上面的代码已经先运行):

data.response[1].id

但是我怀疑你真的不想解决这个问题吗?但是,如果没有更多关于你要做什么的细节,除了你想要的东西之外,很难回答。

如果您想获得所有ID,可以这样做:

ids = [];
for (singleResponse in data.response){
    arrayAppend(ids, singleResponse.id);
}

或者在ColdFusion 10上,还有更多关于如何迭代数组的选项。

再次:澄清你正在尝试做的事情,我们可以帮助你做到这一点。