我可以在Java中获得ISO货币代码的文字说明吗?
有没有办法在Java中获取由Currency对象表示的货币的文本描述?
即我有AZM,我想要阿塞拜疆马纳特
您必须设置自己的映射。 Google或Stackoverflow问题将指向ISO网站
但是你必须刮掉页面,因为似乎没有国家的XML或文本文件
这样的映射将再次依赖于Locale
……我认为您最好的选择是长期,严格地查看ISO 4217并创建从货币代码到货币名称的Map
。
Java不支持它,但有些库可以做到这一点。
我的第一选择是ICU,
此调用可以为您提供多个区域设置中的货币名称。 ICU还支持JRE中没有的所有其他i18nfunction。 但是,它非常大。
另一种选择是jPOS,
如果您对财务数据做任何事情,这是事实上的标准。 注意它的许可证。 我们的律师出于某种原因不喜欢它。
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" }
它几乎是免费的,但有一些条款和条件。 这是在线文档。