将 CSV/XLS 转换为 JSON? [关闭]

Posted

技术标签:

【中文标题】将 CSV/XLS 转换为 JSON? [关闭]【英文标题】:converting CSV/XLS to JSON? [closed] 【发布时间】:2010-10-14 08:29:49 【问题描述】:

有谁知道是否有应用程序可以让我最好将 XLS 转换为 JSON?

我也会满足于 CSV 的转换器,因为如果周围没有任何东西,我可能最终不得不自己编写。

【问题讨论】:

XLS 的结构如何?你认为第一行是列标题吗? CSVkit 这样做:csvkit.readthedocs.org/en/latest/scripts/csvjson.html CsvCruncher 将 CSV 作为 SQL 表,让您执行 SELECT,将结果导出为 CSV 或 JSON。 github.com/OndraZizka/csv-cruncher 这可以使用 pandas 数据框轻松完成。将您的 csv 导入 pandas 数据框并将其转换为 json。 我建议你看看Data Transformer(免责声明 - 我是它的开发者)。它在本地在 CSV、JSON、XML 和 YML 之间进行转换。它提供了许多转换设置(具有良好的默认值),因此您可以根据自己的目的定制结果。您可以从Mac App Store 或Microsoft Store 获取。 【参考方案1】:

看看这是否有帮助:Back to CSV - Convert CSV text to Objects; via JSON

这是一篇发表于 2008 年 11 月的博文,其中包含用于提供解决方案的 C# 代码。

来自博客文章的介绍:

因为 Json 比 Xml 更容易读写。由此可见,CSV(逗号分隔值)比 Json 更容易读写。 CSV 还具有 Excel 等工具,可以轻松使用和创建。因此,如果您想为下一个应用程序创建配置或数据文件,这里有一些将 CSV 转换为 JSON 到 POCO 对象的代码

【讨论】:

谢谢。我不得不将它移植到 java,但最好是尝试重新发明*** 很高兴它可以工作,c# -> java 无论如何都是一个很好的匹配。【参考方案2】:

我刚刚发现了这个:

http://tamlyn.org/tools/csv2json/

(注意:您必须通过网址提供您的 csv 文件)

【讨论】:

此服务需要上传按钮。 网络崩溃了 链接失效【参考方案3】:

如果您找不到现有的解决方案,则可以很容易地用 Java 构建一个基本的解决方案。我刚刚为客户写了一个,包括研究工具只花了几个小时。

Apache POI 将读取 Excel 二进制文件。 http://poi.apache.org/

JSONObject 将构建 JSON

之后,只需遍历 Excel 数据中的行并构建 JSON 结构即可。下面是一些基本用法的伪代码。

FileInputStream inp = new FileInputStream( file );
Workbook workbook = WorkbookFactory.create( inp );

// Get the first Sheet.
Sheet sheet = workbook.getSheetAt( 0 );

    // Start constructing JSON.
    JSONObject json = new JSONObject();

    // Iterate through the rows.
    JSONArray rows = new JSONArray();
    for ( Iterator<Row> rowsIT = sheet.rowIterator(); rowsIT.hasNext(); )
    
        Row row = rowsIT.next();
        JSONObject jRow = new JSONObject();

        // Iterate through the cells.
        JSONArray cells = new JSONArray();
        for ( Iterator<Cell> cellsIT = row.cellIterator(); cellsIT.hasNext(); )
        
            Cell cell = cellsIT.next();
            cells.put( cell.getStringCellValue() );
        
        jRow.put( "cell", cells );
        rows.put( jRow );
    

    // Create the JSON.
    json.put( "rows", rows );

// Get the JSON text.
return json.toString();

【讨论】:

如果将 excel 存储在 E:/exceloutput.xlsx。前两行 file 和 inp 中的值是什么?【参考方案4】:

这对我来说非常有效,不需要上传文件:

https://github.com/cparker15/csv-to-json?files=1

【讨论】:

如果你想转换成文本,你可以粘贴到你的代码中,使用“Actionscript”选项。 很遗憾这个网站宕机了 看来源码在GIT上:github.com/cparker15/csv-to-json?files=1 @zmonteca 用您的链接更新了答案 谢谢,它有效。你只需要更新这个项目的依赖,否则运行失败【参考方案5】:

你可以试试我做的这个工具:

Mr. Data Converter

它可以转换为 JSON、XML 等。

这也是所有客户端,因此您的数据永远不会离开您的计算机。

【讨论】:

看起来很有趣,等我有需要的时候再来看看 这很好,但请注意它不能正确转义引号。当您的 CSV 包含双引号时,输出不会转义它。您可能必须手动完成。非常方便的工具。 很棒的工具!做得很好。 @barrycarton 如果您从 Github 提取最新代码,这似乎已得到修复。上面链接中的那个似乎已经过时了。 嗨@Shan Carter我希望用户只加载excel文件,而不是复制excel的内容,是否可以使用当前代码或者我应该分叉它(如果可以的话) .请分享您的想法。 很棒的工具,@Shan Carter。我冒昧地在我的叉子中使用fix a few things:thdoan.github.io/mr-data-converter【参考方案6】:

现有的解决方案都不起作用,所以我迅速编写了一个可以完成这项工作的脚本。还将空字符串转换为空值,并分隔 JSON 的标题行。可能需要根据您拥有的 CSV 方言和字符集进行调整。

#!/usr/bin/python
import csv, json
csvreader = csv.reader(open('data.csv', 'rb'), delimiter='\t', quotechar='"')
data = []
for row in csvreader:
    r = []
    for field in row:
        if field == '': field = None
        else: field = unicode(field, 'ISO-8859-1')
        r.append(field)
    data.append(r)
jsonStruct = 
    'header': data[0],
    'data': data[1:]

open('data.json', 'wb').write(json.dumps(jsonStruct))

【讨论】:

这与johntron.com/creations/csv-to-json有关吗 否,除了使用相同的库(csv、json)。我从头开始编写代码。我想做的处理需要循环(字符集转换和用 null 替换空字符串)。 我想知道许多声称“这对我有用”的 cmets 和声称“现有解决方案都不起作用”的 cmets 之间的冲突。【参考方案7】:

试试这个小巧的免费工具:

http://keyangxiang.com/csvtojson/

它利用 node.js csvtojson module

【讨论】:

它已经不存在了。 链接是最新的。它应该可以工作。 它在GitHub。这是最灵活的工具。我想要一种使用 CSV (example) 创建嵌套数组或对象的方法。【参考方案8】:

代替硬编码转换器,CSV 支持 Jackson(JSON 处理器)怎么样:https://github.com/FasterXML/jackson-dataformat-csv。所以核心 Jackson 可以将 JSON 读取为 POJO、Maps、JsonNode,几乎任何东西。 CSV 支持也可以对 CSV 做同样的事情。将两者结合起来,它是多种格式之间非常强大但简单的转换器(已经有 XML、YAML 的后端,并且正在添加更多)。

可以在here找到一篇介绍如何执行此操作的文章。

【讨论】:

【参考方案9】:

由于 Powershell 3.0(随 Windows 8 提供,available for Windows 7 and windows Server 2008 但不包括 Windows Vista),您可以使用内置的 convertto-json 命令行开关:

PS E:> $topicsjson = import-csv .\itinerary-all.csv | ConvertTo-Json 

PS E:\> $topicsjson.Length
11909

PS E:\> $topicsjson.getType()

IsPublic IsSerial Name                                     BaseType                  
-------- -------- ----                                     --------                  
True     True     Object[]                                 System.Array              

Online Help Page on Technet

【讨论】:

额外功劳:将 json 保存到文件中... $topicsjson |添加内容-路径“mydata.json” 单行 Powershell 命令:c:\> $jsonData = import-csv .\INPUTFILE.csv | ConvertTo-Json - 深度 100 |输出文件 .\OUTPUTFILE.json 只需运行(import-csv .\in.csv | ConvertTo-Json) &gt; out.json :)【参考方案10】:

这适用于我并在客户端运行: http://www.convertcsv.com/csv-to-json.htm

【讨论】:

感谢您的建议 :) 转换器运行良好。 这个包含制表符分隔符,因此您可以直接从 Excel 粘贴。

以上是关于将 CSV/XLS 转换为 JSON? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

将 JSON 转换为元素树 [关闭]

如何将多维数组转换为json对象[关闭]

JavaScriptSerializer 不会将 Json 字符串转换为对象? [关闭]

将 jsonp 转换为 json [关闭]

将带有表格数据的 Excel 电子表格转换为 JSON 的最简单方法是啥? [关闭]

如何将 JSON 对象转换为 HTML 表格? [关闭]