将 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) > out.json
:)【参考方案10】:
这适用于我并在客户端运行: http://www.convertcsv.com/csv-to-json.htm
【讨论】:
感谢您的建议 :) 转换器运行良好。 这个包含制表符分隔符,因此您可以直接从 Excel 粘贴。以上是关于将 CSV/XLS 转换为 JSON? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章
JavaScriptSerializer 不会将 Json 字符串转换为对象? [关闭]