用Java解析Bloomberg响应
作者:互联网
我得到彭博社这样的回应.我想对此进行解析,然后将值放到excel或csv中.
彭博社的响应是那种XML响应中令人头疼的问题.是否有一种直接解析为JSON的简单方法? (来自对象“会话”或对象“事件”)
HistoricalDataResponse = {
securityData = {
security = "S X5 Comdty"
eidData[] = {
14001, 14001
}
sequenceNumber = 1
fieldExceptions[] = {
}
fieldData[] = {
fieldData = {
date = 2015-05-06
PX_LAST = 956.0
OPEN = 967.25
}
fieldData = {
date = 2015-06-06
PX_LAST = 914.25
OPEN = 956.0
}
}
}
}
这就是回应.由于我们在任何json在线查看器中都使用“ =”而不是“:”,因此将错误作为无效的json给出.
解决方法:
Bloomberg API无法产生有效的JSON.尽管您可能会在进行一些修改后放弃将其解析为JSON,但这并不是一种可靠的方法,因为格式可能会根据查询类型和要检索的字段而有所不同(并且将来可能会更改,因为它不属于规格).
您应该使用文档中详细介绍的提供的方法来解析它(请参阅开发人员指南的第7.2.2节-历史数据请求)中的示例.
或者,您可以使用jBloomberg(免责声明:我是作者),您的代码如下所示:
BloombergSession session = new DefaultBloombergSession();
LocalDate now = LocalDate.now();
RequestBuilder<HistoricalData> hrb = new HistoricalRequestBuilder("S X5 Comdty",
Arrays.asList("PX_LAST", "OPEN"),
now.minusDays(7), now);
HistoricalData result = session.submit(hrb).get();
Map<LocalDate, TypedObject> data = result.forSecurity("SPX Index").forField("PX_LAST").get();
for (Map.Entry<LocalDate, TypedObject> e : data.entrySet()) {
LocalDate dt = e.getKey();
double price = e.getValue().asDouble();
System.out.println("[" + dt + "] " + price);
}
更多示例位于this page的底部.
标签:bloomberg,blpapi,json,java 来源: https://codeday.me/bug/20191120/2042063.html