如何使用golang从解析的json数组中获取特定值?

时间:2016-02-05 05:04:26

标签: json parsing go

我正试图通过twitter api从twitter获得直接消息。我得到了像

这样的api json数组

[{
	"id": 694476444991229955,
	"id_str": "694476444991229955",
	"text": "Got it",
	"sender": {
		"id": 1690262984,
		"id_str": "1690262984",
		"name": "Ashok Kumar T",
		"screen_name": "Ashok_kumar_T",
		"location": "Trivandrum",
		"description": "",
		"url": null
		},
		"protected": false,
		"followers_count": 68,
		"friends_count": 32,
		"listed_count": 0,
		"created_at": "Thu Aug 22 06:52:53 +0000 2013",
		"favourites_count": 5,
		"utc_offset": 19800,
		"time_zone": "Chennai",
		"geo_enabled": true,
		"verified": false,
		"statuses_count": 124,
		"lang": "en",
		"contributors_enabled": false,
		"is_translator": false,
		"is_translation_enabled": false,
		"profile_background_color": "131516",
		"profile_background_image_url": "http:\/\/abs.twimg.com\/images\/themes\/theme14\/bg.gif",
		"profile_background_image_url_https": "https:\/\/abs.twimg.com\/images\/themes\/theme14\/bg.gif",
		"profile_background_tile": true,
		"profile_image_url": "http:\/\/pbs.twimg.com\/profile_images\/378800000337984382\/5eded5a0c6fda4a85511aff15e5befd9_normal.jpeg",
		"profile_image_url_https": "https:\/\/pbs.twimg.com\/profile_images\/378800000337984382\/5eded5a0c6fda4a85511aff15e5befd9_normal.jpeg",
		"profile_banner_url": "https:\/\/pbs.twimg.com\/profile_banners\/1690262984\/1429709252",
		"profile_link_color": "009999",
		"profile_sidebar_border_color": "EEEEEE",
		"profile_sidebar_fill_color": "EFEFEF",
		"profile_text_color": "333333",
		"profile_use_background_image": true,
		"has_extended_profile": false,
		"default_profile": false,
		"default_profile_image": false,
		"following": true,
		"follow_request_sent": false,
		"notifications": false
	}]

我已经成功解析了json。但是我无法从解析的json中获取特定数据。在这里我玩golang链接http://play.golang.org/p/zS42Qws2Di

package main

import (
	"encoding/json"
	"fmt"
	
	
)

type PublicKey struct {
	ID int64
	ID_STR string
	Text string
	SENDER struct {
         ID int64
         ID_STR string
	 NAME string
   	}
	PROTECTED bool
	FOLLOWERS_COUNT int
	FRIENDS_COUNT int
	LISTED_COUNT int
	
}

type KeysResponse struct {
	Collection []PublicKey
}

func main() {
	s := `[{
	"id": 694476444991229955,
	"id_str": "694476444991229955",
	"text": "Got it",
	"sender": {
		"id": 1690262984,
		"id_str": "1690262984",
		"name": "Ashok Kumar T",
		"screen_name": "Ashok_kumar_T",
		"location": "Trivandrum",
		"description": "",
		"url": null
		},
		"protected": false,
		"followers_count": 68,
		"friends_count": 32,
		"listed_count": 0,
		"created_at": "Thu Aug 22 06:52:53 +0000 2013",
		"favourites_count": 5,
		"utc_offset": 19800,
		"time_zone": "Chennai",
		"geo_enabled": true,
		"verified": false,
		"statuses_count": 124,
		"lang": "en",
		"contributors_enabled": false,
		"is_translator": false,
		"is_translation_enabled": false,
		"profile_background_color": "131516",
		"profile_background_image_url": "http:\/\/abs.twimg.com\/images\/themes\/theme14\/bg.gif",
		"profile_background_image_url_https": "https:\/\/abs.twimg.com\/images\/themes\/theme14\/bg.gif",
		"profile_background_tile": true,
		"profile_image_url": "http:\/\/pbs.twimg.com\/profile_images\/378800000337984382\/5eded5a0c6fda4a85511aff15e5befd9_normal.jpeg",
		"profile_image_url_https": "https:\/\/pbs.twimg.com\/profile_images\/378800000337984382\/5eded5a0c6fda4a85511aff15e5befd9_normal.jpeg",
		"profile_banner_url": "https:\/\/pbs.twimg.com\/profile_banners\/1690262984\/1429709252",
		"profile_link_color": "009999",
		"profile_sidebar_border_color": "EEEEEE",
		"profile_sidebar_fill_color": "EFEFEF",
		"profile_text_color": "333333",
		"profile_use_background_image": true,
		"has_extended_profile": false,
		"default_profile": false,
		"default_profile_image": false,
		"following": true,
		"follow_request_sent": false,
		"notifications": false
	},{
	"id": 694476444991229955,
	"id_str": "694476444991229955",
	"text": "Got it",
	"sender": {
		"id": 1690262984,
		"id_str": "1690262984",
		"name": "Ashok Kumar T",
		"screen_name": "Ashok_kumar_T",
		"location": "Trivandrum",
		"description": "",
		"url": null
		},
		"protected": false,
		"followers_count": 68,
		"friends_count": 32,
		"listed_count": 0,
		"created_at": "Thu Aug 22 06:52:53 +0000 2013",
		"favourites_count": 5,
		"utc_offset": 19800,
		"time_zone": "Chennai",
		"geo_enabled": true,
		"verified": false,
		"statuses_count": 124,
		"lang": "en",
		"contributors_enabled": false,
		"is_translator": false,
		"is_translation_enabled": false,
		"profile_background_color": "131516",
		"profile_background_image_url": "http:\/\/abs.twimg.com\/images\/themes\/theme14\/bg.gif",
		"profile_background_image_url_https": "https:\/\/abs.twimg.com\/images\/themes\/theme14\/bg.gif",
		"profile_background_tile": true,
		"profile_image_url": "http:\/\/pbs.twimg.com\/profile_images\/378800000337984382\/5eded5a0c6fda4a85511aff15e5befd9_normal.jpeg",
		"profile_image_url_https": "https:\/\/pbs.twimg.com\/profile_images\/378800000337984382\/5eded5a0c6fda4a85511aff15e5befd9_normal.jpeg",
		"profile_banner_url": "https:\/\/pbs.twimg.com\/profile_banners\/1690262984\/1429709252",
		"profile_link_color": "009999",
		"profile_sidebar_border_color": "EEEEEE",
		"profile_sidebar_fill_color": "EFEFEF",
		"profile_text_color": "333333",
		"profile_use_background_image": true,
		"has_extended_profile": false,
		"default_profile": false,
		"default_profile_image": false,
		"following": true,
		"follow_request_sent": false,
		"notifications": false
	}]`

	keys := make([]PublicKey,0)
	err := json.Unmarshal([]byte(s), &keys)
	if err == nil {
		fmt.Printf("%+v\n", keys)
	} else {
		fmt.Println(err)
		fmt.Printf("%+v\n", keys)
	}
	myId := keys[l].Id
	fmt.Printf(myId)
}

1 个答案:

答案 0 :(得分:1)

如果目标是打印第二个数组元素的标识符,则使用以下代码:

myId := keys[1].ID  // l changed 1, Id changed to ID
fmt.Println(myId)

playground example