简体   繁体   中英

HUBOT Coffescript - JSON obejct

Wondering if anyone can help me with this - pretty much novice in scripting and not sure if I'm doing it right. I need to get an object from this JSON string and it keeps giving me "undefined" error.

Here's the JSON:

    `
    { data:
    [ { type: 'gif',
        id: 'Cmr1OMJ2FN0B2',
        slug: 'hello-Cmr1OMJ2FN0B2',
        url: 'https://giphy.com/gifs/hello-Cmr1OMJ2FN0B2',
        bitly_gif_url: 'https://gph.is/2bZufS7',
        bitly_url: 'https://gph.is/2bZufS7',
        embed_url: 'https://giphy.com/embed/Cmr1OMJ2FN0B2',
        username: '',
        source: 'https://www.fanpop.com/clubs/penguins-of-madagascar/images/37800672/title/hello-photo',
        rating: 'g',
        content_url: '',
        source_tld: 'www.fanpop.com',
        source_post_url: 'https://www.fanpop.com/clubs/penguins-of-madagascar/images/37800672/title/hello-photo',
        is_indexable: 0,
        import_datetime: '2016-09-05 13:48:36',
        trending_datetime: '2017-09-19 14:26:18',
        images: [Object],
        title: 'bom dia hello GIF' } ],
    pagination: { total_count: 2516, count: 1, offset: 0 },
    meta:
    { status: 200,
        msg: 'OK',
        response_id: '5a28576867382f644dc7d33b' } }
    `

And here's my HUBOT script:

    `
    robot.hear /^(no)$|^.*(\sno\s).*$/i, (res) ->
            api_url = 'https://api.giphy.com'
            path = '/v1/gifs/search'
            url = "#{api_url}#{path}"
            robot.http(url)
                .query
                    q: "nono+penguin"
                    rating: 'g'
                    limit: 1
                    fmt: 'json'
                .header('api_key', giphyAuthToken)
                .header('Content-Type', 'application/json')
                .get() (err, res, body) ->
                    # error checking code here 
                    if err
                        console.log err
                    else
                        data = JSON.parse(body)
                        console.log data #this prints above data
                        console.log "success....got giphy response"
                        console.log data.images.original.url #This is giving error that original is undefined   
                        process.exit(1)
    `

Wondering how can I access this "images" object from Giphy's response.

Thanks

The data field in your object is an Array so you need to put the index in order to access the content, ie

data = JSON.parse(body)
console.log data[0].images

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

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