Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/350.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用Java解析bloomberg响应_Java_Json_Bloomberg_Blpapi - Fatal编程技术网

用Java解析bloomberg响应

用Java解析bloomberg响应,java,json,bloomberg,blpapi,Java,Json,Bloomberg,Blpapi,我得到彭博社这样的回应。我想对其进行解析,并将值输出到excel或csv中 Bloomberg响应是XML响应中令人头痛的一种。有没有一种简单的方法可以直接解析为JSON?(来自对象“会话”或对象“事件”) 这就是答案。由于我们在任何json在线查看器中都使用“=”而不是“:”,因此会将错误视为无效json。彭博API不会生成有效的json。尽管在做了一些修改后,您可以将其解析为JSON,但这并不是一种健壮的方法,因为格式可能会根据您想要检索的查询和字段的类型而有所不同(将来可能会更改,因为它不

我得到彭博社这样的回应。我想对其进行解析,并将值输出到excel或csv中

Bloomberg响应是XML响应中令人头痛的一种。有没有一种简单的方法可以直接解析为JSON?(来自对象“会话”或对象“事件”)


这就是答案。由于我们在任何json在线查看器中都使用“=”而不是“:”,因此会将错误视为无效json。

彭博API不会生成有效的json。尽管在做了一些修改后,您可以将其解析为JSON,但这并不是一种健壮的方法,因为格式可能会根据您想要检索的查询和字段的类型而有所不同(将来可能会更改,因为它不是规范的一部分)

您应该使用文档中详细说明的提供方法对其进行解析(请参见《开发人员指南》第7.2.2节-历史数据请求中的示例)

或者,您可以使用(免责声明:我是作者),您的代码如下所示:

 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);
 }
BloombergSession session=newdefaultbloombergsession();
LocalDate now=LocalDate.now();
RequestBuilder hrb=新的历史RequestBuilder(“S X5 Comdty”,
Arrays.asList(“PX_LAST”,“OPEN”),
现在。天数(7),现在);
HistoricalData结果=session.submit(hrb.get();
映射数据=result.forSecurity(“SPX索引”).forField(“PX_LAST”).get();
对于(Map.Entry e:data.entrySet()){
LocalDate dt=e.getKey();
双倍价格=e.getValue().asDouble();
系统输出打印项次(“[”+dt+“]”+价格);
}

更多示例位于的底部。

您可以将
=
替换为
,然后将其解析为JSON,如果这是唯一的问题的话。尝试过该方法仍不起作用。我确实手动将所有=更改为:不仅如此。您必须在双引号内更改每个attibute名称。例如
“securityData”
。这样,您需要替换双引号中的所有属性名。最大的问题是数组
fieldData[]={…}
应该是这样的
fieldData=[…]
。你能提供API的链接吗?我正在用这个。我正在尝试使用双引号的完整试错方法。我仍然没有得到一个有效的json。但是,如果我们这样做是恶意的,那又有什么用呢。我不可能对每个回复都这么做。非常感谢。我试着得到彭博指南第45页给出的数值。也将尝试此方法。如果适用于ReferenceDataRequest,则第45页不适用于您的HistoricalDataRequest。您需要使用第7.2.2节(第83页)中的代码。
 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);
 }