将json文件转换为xml或csv,在OppenOffice / MS Excel中打开

时间:2011-08-02 09:42:47

标签: xml json mongodb

是否有任何可用的工具可以将json文件转换为可以在OpenOffice或Excel中打开的xml或csv文件。

我正在开发一个Web应用程序并使用MongoDB作为后端。已经将数据从MongoDB导出为json,并且需要以某种格式转换数据,这些格式可以通过某些电子表格软件打开。我需要将这些数据提供给客户端,并在切换之前对切片和骰子进行装饰。我打算实现一个以.csv和.xls格式导出​​所需数据的功能,但现在需要一个快速的脏解决方案。

我不得不在一段时间后做同样的事情并找到一些东西(一个简单的脚本)来拯救我的一天。无法再找到脚本,非常感谢任何帮助。

更新:仍在寻找解决方案,并试图组装一个可以解决问题的快速ruby脚本。这里的任何人都知道rails中哪个gem添加to_xml到hash和array?

2 个答案:

答案 0 :(得分:1)

我尝试使用rails console中的以下代码将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,我花了很多时间切片和切割它。

答案 1 :(得分:0)

如果您的数据是简单/平坦的,那么Quests Toad for Cloud Databases(免费)或Jaspersofts iReports可用于直接连接到MongoDB实例/群集并生成提取。如果你有多个级别的嵌套,那么你可能会发现现有的玩具缺乏,就像我去年所做的一样,所以将一些东西作为一个停止间隙。 This EE answer of mine是基于Perl的,但可能会给你一些想法,因为它会很乐意将JSON文件显示为基于Dojo的网格,或将其转换为XLS或XLSX,并将处理多层嵌套。