从Coldfusion中的数组中检索元素

Yan*_*ick 0 coldfusion

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

在此输入图像描述

这是返回的完整数组.

 {
  "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"
    }
  ]
}
Run Code Online (Sandbox Code Playgroud)

Ada*_*ron 6

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

data = deserializeJson(jsonPacket);
Run Code Online (Sandbox Code Playgroud)

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

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

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

data.response[1].id
Run Code Online (Sandbox Code Playgroud)

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

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

ids = [];
for (singleResponse in data.response){
    arrayAppend(ids, singleResponse.id);
}
Run Code Online (Sandbox Code Playgroud)

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

再说一遍:澄清你想要做什么,我们可以帮助你做到这一点.