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

获取Java国家列表的最佳方法,java,Java,而不是Locale.getISOCountries(),那是因为我已经是。获取两个字母的国家代码和完整的国家名称的最佳方法还有什么 从此页创建地图 将其保存到文件(我建议使用XMLEncoder/XMLDecoder类) 创建一个包装类,从文件中加载这个映射(我将使用一个延迟初始化的单例),并允许访问get(…)方法 对上述网页上表格的每一列重复(或使用双向地图)这些步骤 花式时间:加入一些代码,将条目包装在引用对象(SoftReference?)中,这样映射就不会抛出MemoryError 对

而不是
Locale.getISOCountries()
,那是因为我已经是。获取两个字母的国家代码和完整的国家名称的最佳方法还有什么

  • 从此页创建地图
  • 将其保存到文件(我建议使用XMLEncoder/XMLDecoder类)
  • 创建一个包装类,从文件中加载这个映射(我将使用一个延迟初始化的单例),并允许访问get(…)方法
  • 对上述网页上表格的每一列重复(或使用双向地图)这些步骤
  • 花式时间:加入一些代码,将条目包装在引用对象(SoftReference?)中,这样映射就不会抛出MemoryError

  • 对于一个单独的项目,我从数据库中获取了国家代码数据

    注意以下事项:

    • 名字都是大写的。你可能会想要调整它,这样它就不会
    • 这些名称并非都是简单的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());
    
    }
    

    有关更多示例,请参阅此部分。

    您可以使用类似下面的json命令

  • 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();
    }
    
  • 这里是Json字符串

    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"
      }]";
    
  • 或者,您可以从以下链接下载完整的json:


  • 你能把stacktrace贴在这里吗?您使用的是jdk吗?或者尝试不导入java.util.Locale.getISOCountries(),只是为了确保其与您想要的区域设置相同。以前从未知道存在此区域设置。ISO链接现在已断开……博客帖子链接现在会触发巨大的安全警告。