我可以在Java中获得ISO货币代码的文字说明吗?

有没有办法在Java中获取由Currency对象表示的货币的文本描述?

即我有AZM,我想要阿塞拜疆马纳特

您必须设置自己的映射。 Google或Stackoverflow问题将指向ISO网站

但是你必须刮掉页面,因为似乎没有国家的XML或文本文件

这样的映射将再次依赖于Locale ……我认为您最好的选择是长期,严格地查看ISO 4217并创建从货币代码到货币名称的Map

Java不支持它,但有些库可以做到这一点。

我的第一选择是ICU,

http://icu-project.org/apiref/icu4j/com/ibm/icu/util/Currency.html#getName%28java.util.Locale,%20int,%20boolean%5B%5D%29

此调用可以为您提供多个区域设置中的货币名称。 ICU还支持JRE中没有的所有其他i18nfunction。 但是,它非常大。

另一种选择是jPOS,

http://gl.jpos.org/

如果您对财务数据做任何事情,这是事实上的标准。 注意它的许可证。 我们的律师出于某种原因不喜欢它。

java.util.Currency类从java 1.7开始实现。

  Currency curr = Currency.getInstance("AZM"); System.out.println(curr.getCurrencyCode()); // AZM System.out.println(curr.getNumericCode()); // 31 System.out.println(curr.getDisplayName()); // Azerbaijani Manat (1993-2006) 

不幸的是,这个类仍然远离可用性…例如,从numericCode中缺少构造函数,一些displayNames不包含事件DisplayName,…

不在标准API中。 Currency类后面的数据是从包私有类java.util.CurrencyData加载的,并且根本没有文本描述。 如果您的JDK安装了源代码,则可以查看它。

openexchangerates.org以机器可读的JSON格式在线提供此信息:

http://openexchangerates.org/api/currencies.json

它返回的信息就像这样简单:

 { "AED": "United Arab Emirates Dirham", "AFN": "Afghan Afghani", ... "ZMK": "Zambian Kwacha", "ZWL": "Zimbabwean Dollar" } 

它几乎是免费的,但有一些条款和条件。 这是在线文档。