需求:从steam官网获取英雄数据,即为Json数据,并导入到本地数据库
Json数据是这样的
{
"result": {
"heroes": [
{
"name": "npc_dota_hero_antimage",
"id": 1,
"localized_name": "Anti-Mage"
},
{
"name": "npc_dota_hero_axe",
"id": 2,
"localized_name": "Axe"
},
{
"name": "npc_dota_hero_bane",
"id": 3,
"localized_name": "Bane"
},
{
"name": "npc_dota_hero_bloodseeker",
"id": 4,
"localized_name": "Bloodseeker"
},
{
"name": "npc_dota_hero_crystal_maiden",
"id": 5,
"localized_name": "Crystal Maiden"
},
{
"name": "npc_dota_hero_drow_ranger",
"id": 6,
"localized_name": "Drow Ranger"
},
{
"name": "npc_dota_hero_earthshaker",
"id": 7,
"localized_name": "Earthshaker"
},
{
"name": "npc_dota_hero_juggernaut",
"id": 8,
"localized_name": "Juggernaut"
},
{
"name": "npc_dota_hero_mirana",
"id": 9,
"localized_name": "Mirana"
},
{
"name": "npc_dota_hero_nevermore",
"id": 11,
"localized_name": "Shadow Fiend"
},
{
"name": "npc_dota_hero_morphling",
"id": 10,
"localized_name": "Morphling"
},
{
"name": "npc_dota_hero_phantom_lancer",
"id": 12,
"localized_name": "Phantom Lancer"
},
{
"name": "npc_dota_hero_puck",
"id": 13,
"localized_name": "Puck"
},
{
"name": "npc_dota_hero_pudge",
"id": 14,
"localized_name": "Pudge"
},
{
"name": "npc_dota_hero_razor",
"id": 15,
"localized_name": "Razor"
},
{
"name": "npc_dota_hero_sand_king",
"id": 16,
"localized_name": "Sand King"
},
{
"name": "npc_dota_hero_storm_spirit",
"id": 17,
"localized_name": "Storm Spirit"
},
{
"name": "npc_dota_hero_sven",
"id": 18,
"localized_name": "Sven"
},
{
"name": "npc_dota_hero_tiny",
"id": 19,
"localized_name": "Tiny"
},
{
"name": "npc_dota_hero_vengefulspirit",
"id": 20,
"localized_name": "Vengeful Spirit"
},
{
"name": "npc_dota_hero_windrunner",
"id": 21,
"localized_name": "Windranger"
},
{
"name": "npc_dota_hero_zuus",
"id": 22,
"localized_name": "Zeus"
},
{
"name": "npc_dota_hero_kunkka",
"id": 23,
"localized_name": "Kunkka"
},
{
"name": "npc_dota_hero_lina",
"id": 25,
"localized_name": "Lina"
},
{
"name": "npc_dota_hero_lich",
"id": 31,
"localized_name": "Lich"
},
{
"name": "npc_dota_hero_lion",
"id": 26,
"localized_name": "Lion"
},
{
"name": "npc_dota_hero_shadow_shaman",
"id": 27,
"localized_name": "Shadow Shaman"
},
{
"name": "npc_dota_hero_slardar",
"id": 28,
"localized_name": "Slardar"
},
{
"name": "npc_dota_hero_tidehunter",
"id": 29,
"localized_name": "Tidehunter"
},
{
"name": "npc_dota_hero_witch_doctor",
"id": 30,
"localized_name": "Witch Doctor"
},
{
"name": "npc_dota_hero_riki",
"id": 32,
"localized_name": "Riki"
},
{
"name": "npc_dota_hero_enigma",
"id": 33,
"localized_name": "Enigma"
},
{
"name": "npc_dota_hero_tinker",
"id": 34,
"localized_name": "Tinker"
},
{
"name": "npc_dota_hero_sniper",
"id": 35,
"localized_name": "Sniper"
},
{
"name": "npc_dota_hero_necrolyte",
"id": 36,
"localized_name": "Necrophos"
},
{
"name": "npc_dota_hero_warlock",
"id": 37,
"localized_name": "Warlock"
},
{
"name": "npc_dota_hero_beastmaster",
"id": 38,
"localized_name": "Beastmaster"
},
{
"name": "npc_dota_hero_queenofpain",
"id": 39,
"localized_name": "Queen of Pain"
},
{
"name": "npc_dota_hero_venomancer",
"id": 40,
"localized_name": "Venomancer"
},
{
"name": "npc_dota_hero_faceless_void",
"id": 41,
"localized_name": "Faceless Void"
},
{
"name": "npc_dota_hero_skeleton_king",
"id": 42,
"localized_name": "Wraith King"
},
{
"name": "npc_dota_hero_death_prophet",
"id": 43,
"localized_name": "Death Prophet"
},
{
"name": "npc_dota_hero_phantom_assassin",
"id": 44,
"localized_name": "Phantom Assassin"
},
{
"name": "npc_dota_hero_pugna",
"id": 45,
"localized_name": "Pugna"
},
{
"name": "npc_dota_hero_templar_assassin",
"id": 46,
"localized_name": "Templar Assassin"
},
{
"name": "npc_dota_hero_viper",
"id": 47,
"localized_name": "Viper"
},
{
"name": "npc_dota_hero_luna",
"id": 48,
"localized_name": "Luna"
},
{
"name": "npc_dota_hero_dragon_knight",
"id": 49,
"localized_name": "Dragon Knight"
},
{
"name": "npc_dota_hero_dazzle",
"id": 50,
"localized_name": "Dazzle"
},
{
"name": "npc_dota_hero_rattletrap",
"id": 51,
"localized_name": "Clockwerk"
},
{
"name": "npc_dota_hero_leshrac",
"id": 52,
"localized_name": "Leshrac"
},
{
"name": "npc_dota_hero_furion",
"id": 53,
"localized_name": "Nature's Prophet"
},
{
"name": "npc_dota_hero_life_stealer",
"id": 54,
"localized_name": "Lifestealer"
},
{
"name": "npc_dota_hero_dark_seer",
"id": 55,
"localized_name": "Dark Seer"
},
{
"name": "npc_dota_hero_clinkz",
"id": 56,
"localized_name": "Clinkz"
},
{
"name": "npc_dota_hero_omniknight",
"id": 57,
"localized_name": "Omniknight"
},
{
"name": "npc_dota_hero_enchantress",
"id": 58,
"localized_name": "Enchantress"
},
{
"name": "npc_dota_hero_huskar",
"id": 59,
"localized_name": "Huskar"
},
{
"name": "npc_dota_hero_night_stalker",
"id": 60,
"localized_name": "Night Stalker"
},
{
"name": "npc_dota_hero_broodmother",
"id": 61,
"localized_name": "Broodmother"
},
{
"name": "npc_dota_hero_bounty_hunter",
"id": 62,
"localized_name": "Bounty Hunter"
},
{
"name": "npc_dota_hero_weaver",
"id": 63,
"localized_name": "Weaver"
},
{
"name": "npc_dota_hero_jakiro",
"id": 64,
"localized_name": "Jakiro"
},
{
"name": "npc_dota_hero_batrider",
"id": 65,
"localized_name": "Batrider"
},
{
"name": "npc_dota_hero_chen",
"id": 66,
"localized_name": "Chen"
},
{
"name": "npc_dota_hero_spectre",
"id": 67,
"localized_name": "Spectre"
},
{
"name": "npc_dota_hero_doom_bringer",
"id": 69,
"localized_name": "Doom"
},
{
"name": "npc_dota_hero_ancient_apparition",
"id": 68,
"localized_name": "Ancient Apparition"
},
{
"name": "npc_dota_hero_ursa",
"id": 70,
"localized_name": "Ursa"
},
{
"name": "npc_dota_hero_spirit_breaker",
"id": 71,
"localized_name": "Spirit Breaker"
},
{
"name": "npc_dota_hero_gyrocopter",
"id": 72,
"localized_name": "Gyrocopter"
},
{
"name": "npc_dota_hero_alchemist",
"id": 73,
"localized_name": "Alchemist"
},
{
"name": "npc_dota_hero_invoker",
"id": 74,
"localized_name": "Invoker"
},
{
"name": "npc_dota_hero_silencer",
"id": 75,
"localized_name": "Silencer"
},
{
"name": "npc_dota_hero_obsidian_destroyer",
"id": 76,
"localized_name": "Outworld Devourer"
},
{
"name": "npc_dota_hero_lycan",
"id": 77,
"localized_name": "Lycan"
},
{
"name": "npc_dota_hero_brewmaster",
"id": 78,
"localized_name": "Brewmaster"
},
{
"name": "npc_dota_hero_shadow_demon",
"id": 79,
"localized_name": "Shadow Demon"
},
{
"name": "npc_dota_hero_lone_druid",
"id": 80,
"localized_name": "Lone Druid"
},
{
"name": "npc_dota_hero_chaos_knight",
"id": 81,
"localized_name": "Chaos Knight"
},
{
"name": "npc_dota_hero_meepo",
"id": 82,
"localized_name": "Meepo"
},
{
"name": "npc_dota_hero_treant",
"id": 83,
"localized_name": "Treant Protector"
},
{
"name": "npc_dota_hero_ogre_magi",
"id": 84,
"localized_name": "Ogre Magi"
},
{
"name": "npc_dota_hero_undying",
"id": 85,
"localized_name": "Undying"
},
{
"name": "npc_dota_hero_rubick",
"id": 86,
"localized_name": "Rubick"
},
{
"name": "npc_dota_hero_disruptor",
"id": 87,
"localized_name": "Disruptor"
},
{
"name": "npc_dota_hero_nyx_assassin",
"id": 88,
"localized_name": "Nyx Assassin"
},
{
"name": "npc_dota_hero_naga_siren",
"id": 89,
"localized_name": "Naga Siren"
},
{
"name": "npc_dota_hero_keeper_of_the_light",
"id": 90,
"localized_name": "Keeper of the Light"
},
{
"name": "npc_dota_hero_wisp",
"id": 91,
"localized_name": "Io"
},
{
"name": "npc_dota_hero_visage",
"id": 92,
"localized_name": "Visage"
},
{
"name": "npc_dota_hero_slark",
"id": 93,
"localized_name": "Slark"
},
{
"name": "npc_dota_hero_medusa",
"id": 94,
"localized_name": "Medusa"
},
{
"name": "npc_dota_hero_troll_warlord",
"id": 95,
"localized_name": "Troll Warlord"
},
{
"name": "npc_dota_hero_centaur",
"id": 96,
"localized_name": "Centaur Warrunner"
},
{
"name": "npc_dota_hero_magnataur",
"id": 97,
"localized_name": "Magnus"
},
{
"name": "npc_dota_hero_shredder",
"id": 98,
"localized_name": "Timbersaw"
},
{
"name": "npc_dota_hero_bristleback",
"id": 99,
"localized_name": "Bristleback"
},
{
"name": "npc_dota_hero_tusk",
"id": 100,
"localized_name": "Tusk"
},
{
"name": "npc_dota_hero_skywrath_mage",
"id": 101,
"localized_name": "Skywrath Mage"
},
{
"name": "npc_dota_hero_abaddon",
"id": 102,
"localized_name": "Abaddon"
},
{
"name": "npc_dota_hero_elder_titan",
"id": 103,
"localized_name": "Elder Titan"
},
{
"name": "npc_dota_hero_legion_commander",
"id": 104,
"localized_name": "Legion Commander"
},
{
"name": "npc_dota_hero_ember_spirit",
"id": 106,
"localized_name": "Ember Spirit"
},
{
"name": "npc_dota_hero_earth_spirit",
"id": 107,
"localized_name": "Earth Spirit"
},
{
"name": "npc_dota_hero_terrorblade",
"id": 109,
"localized_name": "Terrorblade"
},
{
"name": "npc_dota_hero_phoenix",
"id": 110,
"localized_name": "Phoenix"
},
{
"name": "npc_dota_hero_oracle",
"id": 111,
"localized_name": "Oracle"
},
{
"name": "npc_dota_hero_techies",
"id": 105,
"localized_name": "Techies"
},
{
"name": "npc_dota_hero_winter_wyvern",
"id": 112,
"localized_name": "Winter Wyvern"
},
{
"name": "npc_dota_hero_arc_warden",
"id": 113,
"localized_name": "Arc Warden"
},
{
"name": "npc_dota_hero_abyssal_underlord",
"id": 108,
"localized_name": "Underlord"
},
{
"name": "npc_dota_hero_monkey_king",
"id": 114,
"localized_name": "Monkey King"
},
{
"name": "npc_dota_hero_pangolier",
"id": 120,
"localized_name": "Pangolier"
},
{
"name": "npc_dota_hero_dark_willow",
"id": 119,
"localized_name": "Dark Willow"
}
],
"status": 200,
"count": 115
}
}
我们用这个封装方法来解析Json数组
public static <T> List<T> getObjectList(String jsonString,Class<T> cls){
List<T> list = new ArrayList<T>();
try {
Gson gson = new Gson();
JsonArray arry = new JsonParser().parse(jsonString).getAsJsonArray();
for (JsonElement jsonElement : arry) {
list.add(gson.fromJson(jsonElement, cls));
}
} catch (Exception e) {
e.printStackTrace();
}
return list;
}
用这个方法来对URL进行解析和设置
public static String getUrlForHero(String strURL) throws IOException {
URL url = new URL(strURL);
HttpURLConnection httpConn = (HttpURLConnection)
url.openConnection();
httpConn.setRequestMethod("GET");
httpConn.connect();
BufferedReader reader = new BufferedReader(new InputStreamReader(
httpConn.getInputStream()));
String line;
StringBuffer buffer = new StringBuffer();
while ((line = reader.readLine()) != null) {
buffer.append(line);
}
reader.close();
httpConn.disconnect();
String result = new String(buffer.substring(20,buffer.length()-27));//这里把不用的数据去掉,保留heroes之后的数组,status,count不要。
//JSONArray jsonArray = JSONArray.fromObject(result);
return result;
}
最后这样调用
private void addHeroFromSteamAPI() throws IOException {
String jsonArray = URLUtil.getUrlForHero("https://api.steampowered.com/IEconDOTA2_570/GetHeroes/v1/?key=id&format=json&language=Chinese");
List<Hero> heroes = GsonUtil.getObjectList(jsonArray,Hero.class);
for (Hero hero:heroes){
HeroBean heroBean = new HeroBean();
heroBean.setId(hero.getId());
heroBean.setName(hero.getName());
heroBean.setLocalizedName(hero.getLocalized_name());
heroService.addHeroFromSteamAPI(heroBean);
}
}