是否有任何开源java库将FIX消息转换为json格式?

时间:2014-08-30 17:57:21

标签: quickfix

Quickfix支持将FIX消息转换为XML,但不支持转换为json。我发现与此相关的唯一参考是https://docs.google.com/file/d/0B6xZVoYGImPOZGotUmVQOVBBMzA/preview

是否有任何开源库已经这样做了?

[编辑]有XML到JSON转换器,但这是一个两步过程,效率不高。是否有一个库直接将其转换为json格式?

3 个答案:

答案 0 :(得分:1)

如果你想这样做,你需要做一些关于如何处理某些案件的决定。例如:

  • 你发出FIX" enums"在JSON中作为名称或数字?
  • 您是否支持用户定义字段(和值)的名称?
  • 您是将FIX字段编号作为JSON中的数字发出还是名称?
  • 你怎么做重复团体? FIX有它们,但JSON没有。

我确实做了一个不久前做过这个的程序,但它是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>