编程语言
首页 > 编程语言> > 用Java解析Bloomberg响应

用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