获取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中的此国家/地区列表 。
- 从此页面创建地图http://www.theodora.com/country_digraphs.html
- 将它保存到文件中(我建议使用XMLEncoder / XMLDecoder类)
- 创建一个包装类,从文件中加载这个Map(我使用一个懒惰的初始化单例)并允许访问get(…)方法。
- 对上述网页上表格的每一列重复(或使用双向映射)这些步骤。
- Fancy-Time:抛出一些代码将条目包装在Reference对象(SoftReference?)中,这样Map就不会抛出MemoryErrors
你可以使用json bellow之类的
-
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 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" }]";
-
或者您可以从链接下载完整的json: https : //gist.github.com/Goles/3196253