Quickfix支持将FIX消息转换为XML,但不支持转换为json。我发现与此相关的唯一参考是https://docs.google.com/file/d/0B6xZVoYGImPOZGotUmVQOVBBMzA/preview。
是否有任何开源库已经这样做了?
[编辑]有XML到JSON转换器,但这是一个两步过程,效率不高。是否有一个库直接将其转换为json格式?
答案 0 :(得分:1)
如果你想这样做,你需要做一些关于如何处理某些案件的决定。例如:
我确实做了一个不久前做过这个的程序,但它是Python而且它不是开源的。我利用QuickFIX XML文件定义字段编号,名称和枚举文本值,以使生活更轻松。我想我会以某种方式将重复组转换为数组,但即使这样,如果在重复组中有用户定义的字段,它也不起作用(然后必须编辑XML配置文件,否则就没有办法了知道每个小组的结局。
答案 1 :(得分:1)
由于你特别要求Java,我不会将其归类为答案本身,但是命令行实用程序fix2json现在可用于帮助将本机FIX(TV)消息文件呈现为JSON:
https://github.com/SunGard-Labs/fix2json
完全披露:通过我的雇主发布的fix2json的作者。
答案 2 :(得分:0)
Apache Camel包含一个转换器:QuickfixjMessageJsonPrinter.java
然而,这仅解析Camel Exchange对象。我对它进行了调整,使其可以与quickFix Message对象一起使用:
public class FixToJson {
private static DataDictionary dataDictionary;
public static String fixToJson(Message message) throws Exception {
StringBuilder sb = new StringBuilder();
QuickfixjMessageJsonTransformer renderer = new QuickfixjMessageJsonTransformer();
sb.append(renderer.transform(message, " ", getDictionnary())).append("\n");
sb.append("}\n");
return sb.toString();
}
private static DataDictionary getDictionnary() throws Exception {
try {
if (dataDictionary == null) {
String pathToDictionnary = "/path/to/fixDictionnary/dic.xml";
dataDictionary = new DataDictionary(pathToDictionnary);
}
return dataDictionary;
}
catch (ConfigError configError) {
throw new Exception("Error while instanciating FIX DataDictionnary : " + configError.getMessage());
}
}
}
不要忘记包含
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-quickfix</artifactId>
<version>2.17.0</version>
</dependency>
我没有单独测试过,所以您可能还需要包含
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-core</artifactId>
<version>2.17.0</version>
</dependency>