2010-12-17 79 views

回答

0

我從來沒有聽說過這樣的工具。更重要的是,我懷疑這樣的工具(用於JSON的C/C++生成器)是不切實際的。

原因有很多。一些最重要的是:

  • 一個關鍵問題是JSON沒有模式。這意味着API生成器將不得不求助於查看示例消息並嘗試推斷期望的字段以及它們的類型。在某些情況下,這可能很困難,甚至在理論上也是不可能的在諸如Java和C#等語言中,有直接的「正確方法」來生成對象API;例如JavaBeans約定。在C++中,特別是C中,約定不存在,並且存在諸如容器協議和內存管理等複雜問題。

  • 像Java和C#這樣的語言是運行時類型安全的,並且提供了各種語言級別的機制,允許您使用動態編程來處理JSON的無模式性質。例如,在Java中,您有反射,代理類,動態代碼生成和動態代碼加載,所有這些都可以幫助處理JSON。在C和C++中,這些機制通常不可用。

簡而言之,如果您使用的是C或C++,那麼JSON庫就像它將得到的一樣好。

隨訪

正如評論指出,這可能是基於JAX-RS 具體服務器實現的上下文中是可行的。您需要掌握內部元數據,應用JSON映射,並從中生成C/C++ API。問題是:

  1. 生成器實現將是平臺特定的。
  2. 基於C/C++的客戶端將無法應對有效模式的更改,而無需重新生成API和相應的客戶端代碼更改。(相比之下,基於JSON庫的解決方案理論上可以編碼來處理意外的新屬性等)
  3. 您仍然有處理容器/內存管理問題。
+0

如果你只考慮JSON,我相信你是正確的。不過,我相信在JAX-RS中將會有一個基於Java的模式,從中可以用另一種語言生成值對象。我認爲這個問題更多的是如果有人已經做到了。 JBoss RestEasy聲稱他們提供了Java中的某些東西。 – FelixM 2010-12-18 17:06:08

0

你需要的是你選擇發送和接收http請求的庫以及一個json解析器。沒有什麼東西會產生代碼來讓你更容易,因爲這樣的API的想法是它吐出了JSON。 JSON的要點是以一致的方式跨越語言和交通障礙。有點像XML,但更簡單。

這個問題可能會對你感興趣:what's the best json parserJSON Spirit看起來像一個特別好的文章。

現在,當您使用REST時,您需要的只是與正確的URL進行通信。完成。

你想決定的最後一件事是用於網絡通信的庫。我敢肯定,Boost會是很多人的推薦。

+0

我知道JSON是什麼,它有庫,但我不想寫所有的樣板代碼,將它解析到C/C++結構體/類中。當有新的班級或領域時,我也不想再改變一切。這就是我尋找自動化解決方案的原因。 – FelixM 2010-12-17 22:24:46

相關問題