2011-08-02 24 views
4

是否有任何工具可以將json文件轉換爲可以在OpenOffice或Excel中打開的xml或csv文件。將json文件轉換爲xml或csv,在OppenOffice/MS Excel中打開

我正在開發一個web應用程序並使用MongoDB作爲後端。已經從MongoDB中將數據導出爲json,並且需要以某種可以由某些電子表格軟件打開的格式轉換數據。我需要將這些數據提供給客戶端,並且在切換之前對其進行裝飾。我計劃實現一項功能,它將以.csv和.xls格式導出​​所需的數據,但現在需要一個快速骯髒的解決方案。

我不得不在同一時間做同樣的事情,並找到了一些東西(一個簡單的腳本),這節省了我的一天。無法再次找到腳本,任何幫助將非常感激。

更新:仍在尋找解決方案,並試圖組裝一個可以解決問題的快速ruby腳本。這裏的任何人都知道rails中的哪個gem將散列和數組添加到to_xml

回答

1

我試圖JSON轉換成XML在軌控制檯下面的代碼:

arr = [] 
File.readlines("some_name.json").each {|l| arr << JSON.parse(l)} 
File.open("some_name.xml", "w").write(arr.to_xml) 

但JSON在其中有一些按鍵以「$」,和Excel拒絕打開XML文件。所以,我這個再次嘗試在控制檯:

class Array 
    def sanitize_for_xml 
    self.each{|entry| entry.sanitize_for_xml if entry.respond_to?(:sanitize_for_xml)} 
    self 
    end 
end 

class Hash 
    def sanitize_for_xml 
    self.each do |key, value| 
     self[key] = value.sanitize_for_xml if value.respond_to?(:sanitize_for_xml) 
    end 

    self.keys.each do |key| 
     self[key.gsub(/\W/, "")] = self.delete(key) 
    end 
    self 
    end 
end 

arr = [] 
File.readlines("galgotias.2010-08-02.json").each {|l| arr << JSON.parse(l)} 
arr.sanitize_for_xml 
File.open("galgotias.2010-08-02.xml", "w").write(arr.to_xml) 

,並能夠在Excel中打開生成的xml,雖然它不是一個整潔的Excel和我花了很多時間切片和切塊它。

+0

我有jQuery的TokenInput的問題。請檢查此鏈接,並給我一個解決方案,如果ücan..http://stackoverflow.com/questions/13558856/what-should-be-the-correct-response -from-web-service-to-display-the-jquery-token – Xavier

0

如果數據是簡單/平坦,然後Quests Toad for Cloud Databases(免費),或Jaspersofts iReports可用於直接連接到的MongoDB實例/集羣和產生的提取物。如果你有多層次的嵌套,那麼你可能會發現現有的玩具缺乏,就像我去年所做的那樣,這樣就把一些東西拼湊在一起,成爲一個停止差距。 This EE answer of mine是基於Perl的,但可能會給你一些想法,因爲它可以愉快地將JSON文件顯示爲基於Dojo的網格,或者將其轉換爲XLS或XLSX,並且可以處理多層嵌套。

+0

我在mongodb文檔中有多個子文檔。其中一些也是陣列。你能分享你提到的「基於Perl」的東西嗎? – rubish

+0

我確定鏈接在帖子中(在「想法」一詞中,它絕對在前一版本的帖子中),無論如何都已將該鏈接添加到「follow」這個單詞上,但它是指向EE網站,所以它可能會突然消失。 – arober11

+0

@ arober11你可以查看這篇文章的[修訂歷史](http://stackoverflow.com/posts/13540327/revisions),看看你是不正確的;這是這篇文章的第一個編輯。也就是說,我現在正在編輯它,以符合披露您所發佈鏈接的作者身份的要求。 –