获取Java国家列表的最佳方式

除了Locale.getISOCountries() ,因为我已经遇到了一些奇怪的错误 。 获取2个字母的国家/地区代码以及完整的国家/地区名称的最佳方法是什么?

对于单独的项目,我从ISO站点获取了国家/地区代码数据。

请注意以下事项:

  • 这些名字都是大写的。 你可能想要调整它,所以它不是。
  • 这些名称并非都是简单的ASCII。
  • 这些名字并非完全是政治中立的(任何所谓的国家名单都可能不可能)。 例如,“台湾,中国的省”是一个名字。 这篇博客文章是了解这些问题的一个很好的起点。

请参阅代码段:

 String[] countryCodes = Locale.getISOCountries(); for (String countryCode : countryCodes) { Locale obj = new Locale("", countryCode); System.out.println("Country Code = " + obj.getCountry() + ", Country Name = " + obj.getDisplayCountry()); } 

有关更多示例,请参阅Java中的此国家/地区列表 。

  1. 从此页面创建地图http://www.theodora.com/country_digraphs.html
  2. 将它保存到文件中(我建议使用XMLEncoder / XMLDecoder类)
  3. 创建一个包装类,从文件中加载这个Map(我使用一个懒惰的初始化单例)并允许访问get(…)方法。
  4. 对上述网页上表格的每一列重复(或使用双向映射)这些步骤。
  5. Fancy-Time:抛出一些代码将条目包装在Reference对象(SoftReference?)中,这样Map就不会抛出MemoryErrors

你可以使用json bellow之类的

  1. Json解析..

     String jsonString =JSON_DATA; ObjectMapper mapper = new ObjectMapper(); try { JsonNode rootNode = mapper.readTree(jsonString); for (JsonNode node : rootNode) { String countrycode = node.path("code").asText(); String dialnumber = node.path("dial_code").asText(); String countryname = node.path("name").asText(); } } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } 
  2. Json String在这里

     public static String JSON_DATA=" [ { "name": "Afghanistan", "dial_code": "+93", "code": "AF" }, { "name": "Aland Islands", "dial_code": "+358", "code": "AX" }, { "name": "Albania", "dial_code": "+355", "code": "AL" }, { "name": "Algeria", "dial_code": "+213", "code": "DZ" }, { "name": "AmericanSamoa", "dial_code": "+1684", "code": "AS" }]"; 
  3. 或者您可以从链接下载完整的json: https : //gist.github.com/Goles/3196253