2014-08-30 73 views
-1

Quickfix支持將FIX消息轉換爲XML,但不支持轉換爲json。我發現的唯一參考文獻是https://docs.google.com/file/d/0B6xZVoYGImPOZGotUmVQOVBBMzA/preview是否有任何開源的java庫將FIX消息轉換爲json格式?

是否有任何開源庫已經這樣做?

[編輯]有XML到JSON轉換器,但這是一個2步過程,效率不高。有沒有一個庫直接將其轉換爲json格式?

+0

爲什麼不使用Quickfix將FIX轉換爲XML,然後將XML轉換爲JSON? http://heshans.blogspot.com/2014/01/java-library-to-convert-xml-to-json.html – mjk 2014-08-30 18:02:28

回答

0

如果你想這樣做,你需要做一些關於如何處理某些情況的決定。例如:

  • 您是否在JSON中發出FIX「enums」作爲名稱或數字?
  • 您是否支持用戶定義字段(和值)的名稱?
  • 您是否將FIX字段編號作爲JSON中的數字或名稱發出?
  • 你對重複羣組做什麼? FIX有他們,但JSON不。

前段時間我做了一個程序,但它是Python,它不是開源的。我利用定義字段編號,名稱和枚舉文本值的QuickFIX XML文件來簡化生活。我認爲我以某種方式將重複組轉換爲數組,但即使如此,如果在重複組中有用戶定義的字段,它也不起作用(您必須編輯XML配置文件,否則無法知道每個組的結束位置)。

1

既然你問了Java的具體我就不該分類作爲一個答案本身,而是fix2json,一個命令行工具,現在可以幫助目前天然FIX(TV)的消息文件,JSON:

https://github.com/SunGard-Labs/fix2json

完全披露:fix2json的作者,通過我的僱主發佈。

0

Apache的駱駝包括轉換器:QuickfixjMessageJsonPrinter.java

但是,這僅解析駱駝交換對象。我適應它,使其可用與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> 
相關問題