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

时间:2009-04-03 01:18:53

标签: java

除了Locale.getISOCountries()之外,因为我已经getting some strange errors with that了。获取2个字母的国家/地区代码以及完整的国家/地区名称的最佳方法是什么?

4 个答案:

答案 0 :(得分:42)

请参阅代码段:

String[] countryCodes = Locale.getISOCountries();

for (String countryCode : countryCodes) {

    Locale obj = new Locale("", countryCode);

    System.out.println("Country Code = " + obj.getCountry() 
        + ", Country Name = " + obj.getDisplayCountry());

}

有关更多示例,请参阅此country list in Java

答案 1 :(得分:4)

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

请注意以下事项:

  • 名称全部上限。你可能想要调整它,所以它不是。
  • 名称不是全部采用简单的ASCII格式。
  • 这些名字并非完全是政治中立的(任何所谓的国家名单都不可能)。例如,“台湾,中国的省”是一个名字。了解这些问题的一个很好的起点是this blog post

答案 2 :(得分:1)

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

答案 3 :(得分:0)

您可以像这样从JSON波纹管中使用

  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 here

    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. 或者您可以从链接:https://gist.github.com/Goles/3196253

  4. 下载完整的json