2013-08-31 2 views
0

Я получаю следующий возврат структуры из API disqus.com, и я просто не знаю, как извлечь только следующее значение «id» в red, используя Coldfusion.Извлечь элемент из массива в Coldfusion

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" 
    } 
    ] 
} 
+0

Мне тоже хотелось бы, но мне нечего показать вам, так как я не знаю, как это достичь. – Yannick

ответ

6

Ну: во-первых, это JSON пакет не массив, так что вам нужно, чтобы превратить его в структуру CFML данных по deserialising его, например:

data = deserializeJson(jsonPacket); 

Тогда вы будете иметь родной CFML struct (не массив ... массив является одним из значений внутри структуры).

Оттуда вы бы получить доступ к любому данному элементу, как один нормально бы с CFML структуры, используя/нотацию-структуру массива или структуры функции/и т.д.

Чтобы получить адрес пункта вы отмечаете, что это будет быть (с учетом выше код был бежать первым):

data.response[1].id 

Однако я подозреваю, что вы действительно не хотите, чтобы решить только, что одно значение? Но не более подробно о том, что вы пытаетесь сделать, трудно ответить иначе, чем то, что вы хотите.

Если вы хотите, чтобы получить все идентификаторы, можно было бы сделать это:

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

Или на ColdFusion 10 есть больше вариантов с тем, как перебрать массивы.

Снова: уточните, что вы пытаетесь сделать, и мы можем помочь вам в этом.

+0

Спасибо, миллионы раз ... Так хорошо объяснили ... Мне нужно получить значение id, когда заголовок из ответа = «Осел долго проживает» – Yannick

+0

ОК, обновите свой вопрос, чтобы это то, что вы просите , –

+0

Это нормально, я нашел решение благодаря вашей помощи \t \t \t \t \t \t \t \t \t < CFSET ThreadId = struct.id> \t \t \t \t \t Yannick

Смежные вопросы