【问题标题】:parsing the bloomberg response in Java在 Java 中解析彭博响应
【发布时间】:2015-06-09 07:38:55
【问题描述】:

我收到了这样的彭博回应。我想解析这个并将值放入 excel 或 csv 中。

Bloomberg 响应是一种令人头疼的 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。

【问题讨论】:

  • 如果这是唯一的问题,您可以将 = 替换为 :,然后将其解析为 JSON。
  • 试过还是不行。我确实将所有 = 更改为 : 手动。
  • 不仅如此。您必须在双引号内更改每个属性名称。例如"securityData"。像这样,您需要替换双引号内的所有属性名称。
  • 最大的问题是数组。 fieldData[] = {...} 应该是这样的fieldData = [...]。能否提供 API 链接?
  • jsoneditoronline.org 我正在使用这个。我正在尝试使用双引号的完整试验和错误方法。我仍然没有得到有效的 json。但是,如果我们这样做,这样做有什么用呢?我不能对每个回复都这样做。

标签: java json bloomberg blpapi


【解决方案1】:

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底部有更多示例。

【讨论】:

  • 非常感谢。我尝试获取彭博指南第 45 页中给出的值。也会试试这个方法。
  • 第 45 页,如果用于 ReferenceDataRequest 并且不适用于您的 HistoricalDataRequest。为此,您需要使用第 7.2.2 节(第 83 页)中的代码。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-27
  • 1970-01-01
  • 1970-01-01
  • 2013-04-28
  • 1970-01-01
相关资源
最近更新 更多