代码之家  ›  专栏  ›  技术社区  ›  Samir Shah

HUBOT Coffescript-JSON obejct

  •  0
  • Samir Shah  · 技术社区  · 7 年前

    想知道是否有人可以帮我做这件事-几乎是脚本新手,不确定我做得是否正确。我需要从这个JSON字符串中获取一个对象,它一直给我“未定义”的错误。

    以下是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' } }
        `
    

    这是我的HUBOT脚本:

        `
        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)
        `
    

    想知道如何从Giphy的回复中访问这个“images”对象。

    谢谢

    1 回复  |  直到 7 年前
        1
  •  1
  •   ruedamanuel    7 年前

    对象中的数据字段是一个数组,因此需要放置索引以访问内容,即。

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