目录

1、简介

2. 要求

3. 如何使用

3.1 样本数据

3.2 安装库

3.3 快速转换

3.4 选择性列转换

3.3 使用POCO对象


  • 下载 Cinchoo ETL 源码
  • 下载 Cinchoo ETL 二进制文件 (.NET Core)
  • 下载 Cinchoo ETL 二进制文件 (.NET Framework)
  • 工作示例 1(.NET Fiddle)
  • 工作示例 2 (.NET Fiddle)
  • 工作示例 3(.NET Fiddle)

1、简介

ChoETL是一个用于.NET的开源ETL(提取、转换和加载)框架。它是一个基于代码的库,用于在.NET环境中从多个来源提取数据、转换并加载到您自己的数据仓库中。您可以立即在数据仓库中获取数据。

本文讨论使用Cinchoo ETL框架将CSV文件转换为JSON格式文件。使用非常简单,几行代码就可以完成转换。您可以转换大文件,因为转换过程是基于流的,速度非常快且内存占用少。

2. 要求

该框架库是使用.NET 4.5/.NET Core 3.x框架用C#编写的。

3. 如何使用

3.1 样本数据

让我们先来看一个转换以下CSV文件的简单示例。此示例CSV包含具有不同格式的值的所有可能组合。

清单 3.1.1 示例CSV文件 (emp.json)

FirstName,LastName,Street,City,State,Zip
John,Doe,120 jefferson st.,Riverside, NJ, 08075
Jack,McGinnis,220 hobo Av.,Phila, PA,09119
"John ""Da Man""",Repici,120 Jefferson St.,Riverside, NJ,08075
Stephen,Tyler,"7452 Terrace ""At the Plaza"" road",SomeTown,SD, 91234
,Blankman,,SomeTown, SD, 00298
"Joan ""the bone"", Anne",Jet,"9th, at Terrace plc",Desert City,CO,00123

预期的JSON文件将是(emp.json ):

[{"FirstName": "John","LastName": "Doe","Street": "120 jefferson st.","City": "Riverside","State": "NJ","Zip": "08075"},{"FirstName": "Jack","LastName": "McGinnis","Street": "220 hobo Av.","City": "Phila","State": "PA","Zip": "09119"},{"FirstName": "John \"Da Man\"","LastName": "Repici","Street": "120 Jefferson St.","City": "Riverside","State": "NJ","Zip": "08075"},{"FirstName": "Stephen","LastName": "Tyler","Street": "7452 Terrace \"At the Plaza\" road","City": "SomeTown","State": "SD","Zip": "91234"},{"FirstName": null,"LastName": "Blankman","Street": null,"City": "SomeTown","State": "SD","Zip": "00298"},{"FirstName": "Joan \"the bone\", Anne","LastName": "Jet","Street": "9th, at Terrace plc","City": "Desert City","State": "CO","Zip": "00123"}
]

3.2 安装库

接下来,安装ChoETL.JSON/ChoETL.JSON.NETStandard nuget包。为此,请在包管理器控制台中运行以下命令。

.NET Standard Framework

Install-Package ChoETL.JSON

.NET Core

Install-Package ChoETL.JSON.NETStandard

现在将ChoETL命名空间添加到程序中。

using ChoETL;

3.3 快速转换

让我们使用该库将CSV文件转换为JSON格式的文件。它很简单,只需几行代码即可完成。不需要POCO类。它速度快、基于流且占用内存少。

清单 3.3.1 快速CSVJSON文件转换

private static void QuickConversion()
{using (var r = new ChoCSVReader("emp.csv").WithFirstLineHeader().MayHaveQuotedFields()){using (var w = new ChoJSONWriter(Console.Out).UseJsonSerialization())w.Write(r);}
}

创建一个用于生成JSON (emp.json )文件的ChoJSONWriter实例。然后创建一个ChoCSVReader对象实例来读取emp.csv文件。由于CSV带有一些带引号的字段,因此添加MayHaveQuotedFields()。最后在JSONWriter上调用'Write'方法将对象写入输出文件。

Fiddle示例:https ://dotnetfiddle.net/zZWBQK

3.4 选择性列转换

在某些情况下,您可能希望控制在JSON输出文件中输出选择性列。并且您希望以本机格式指定和处理字段,以便可以以更清洁的方式生成JSON输出。

在下面的演示中,我们将选择'firstName'、'lastName'和'city'列。

清单 3.4.1 快速CSVJSON文件转换

private static void SelectiveColumnTest()
{using (var r = new ChoCSVReader("emp.csv".WithFirstLineHeader().MayHaveQuotedFields().WithField("FirstName").WithField("LastName").WithField("City")){using (var w = new ChoJSONWriter("emp.json").UseJsonSerialization())w.Write(r);}
}

在上面,所有的数据元素都被当作文本处理和转换。如果您想为某些列添加类型并以本机格式输出,您可以使用'WithField'方法来实现。

Fiddle示例:https ://dotnetfiddle.net/7xNC8f

清单 3.4.2  JSON输出文件

[{"FirstName": "John","LastName": "Doe","City": "Riverside"},{"FirstName": "Jack","LastName": "McGinnis","City": "Phila"},{"FirstName": "John \"Da Man\"","LastName": "Repici","City": "Riverside"},{"FirstName": "Stephen","LastName": "Tyler","City": "SomeTown"},{"FirstName": null,"LastName": "Blankman","City": "SomeTown"},{"FirstName": "Joan \"the bone\", Anne","LastName": "Jet","City": "Desert City"}
]

3.3 使用POCO对象

这种方法向您展示了如何定义POCO实体类并将它们用于转换过程。这种方法更安全,并且可以更好地控制转换过程,例如进行属性验证、使用回调机制等。

首先,创建一个属性匹配CSV文件的类。

清单 3.3.1 映射类

public class Employee
{public string FirstName { get; set; }public string LastName { get; set; }public string Street { get; set; }public string City { get; set; }public string Zip{ get; set; }
}

然后使用下面的这个类来进行文件的转换。

清单 3.3.2 使用POCO对象将JSON转换为CSV文件

private static void UsingPOCO()
{using (var r = new ChoCSVReader<Employee>("emp.csv").WithFirstLineHeader().MayHaveQuotedFields()){using (var w = new ChoJSONWriter<Employee>("emp.json").UseJsonSerialization())w.Write(r);}
}

Fiddle示例:https ://dotnetfiddle.net/w43fHa

下载上面附加的示例,尝试一下。

https://www.codeproject.com/Tips/1209690/Cinchoo-ETL-Quick-Start-Converting-CSV-to-JSON-Fil

Cinchoo ETL——快速入门:将CSV转换为JSON文件相关推荐

  1. Cinchoo ETL——快速入门:将JSON转换为CSV文件

    目录 1.简介 2. 要求 3. 如何使用 3.1 样本数据 3.2 快速转换 3.3 使用POCO对象 3.4 使用投影 下载 Cinchoo ETL 源码 下载 Cinchoo ETL 二进制文件 ...

  2. JS小知识,如何将 CSV 转换为 JSON 字符串

    大家好,今天和大家聊一聊,在前端开发中,我们如何将 CSV 格式的内容转换成 JSON 字符串,这个需求在我们处理数据的业务需求中十分常见,你是如何处理的呢,如果你有更好的方法欢迎在评论区补充. 一. ...

  3. C# json解析字符串总是多出双引号_在JavaScript应用中将CSV转换为JSON

    来源:公众号<前端全栈开发者>(ID:by-zhangbing-dev) 将CSV转换为JSON是一项需要做很多工作的任务,在本文中,我将研究如何使用 csvtojson 模块将CSV转换 ...

  4. 一文综述python读写csv xml json文件各种骚操作

    Python优越的灵活性和易用性使其成为最受欢迎的编程语言之一,尤其是对数据科学家而言.这在很大程度上是因为使用Python处理大型数据集是很简单的一件事情. 如今,每家科技公司都在制定数据战略.他们 ...

  5. SpringBoot/Java 将MongoDB中的数据转换为json文件

    项目背景: 我最近在做SpringBoot的项目,其中数据库使用的是MongoDB,前端框架用的是layui.在我使用layui的数据表格组件时,其数据接口对应的是json文件,所有我得将MongoD ...

  6. 爬虫Spider 09 - scrapy框架 | 日志级别 | 保存为csv、json文件

    文章目录 Spider 08回顾 selenium+phantomjs/chrome/firefox execjs模块使用 Spider 09笔记 scrapy框架 小试牛刀 猫眼电影案例 知识点汇总 ...

  7. touch服务器端文件,Sencha touch 2 入门 -------- DataView 显示服务器端JSON文件数据...

    今天学习了下DataView如何显示JSON文件数据,废话不多说,直接贴代码: 首先看下文件目录: 然后看下我们要处理的JSON文件,bookInfo.json. { "success&qu ...

  8. gdal java shp_【GDAL/OGR】利用GDAL/OGR读取shp文件并转换为json文件(Java版)

    前言: 对于GIS开发者来说,GDAL/OGR是最熟悉不过的开源GIS库了,GDAL(Geospatial Data Abstraction Library)是一个在X/MIT许可协议下的开源栅格空间 ...

  9. csv和json文件

    csv和json是Python里面常见的文本数据保存格式, 一般两者的区别 1.csv文件可以用exel打开,里面的内容格式:数据之间是使用','隔开. [,..........,] 2.json数据 ...

最新文章

  1. R语言找到CRAN库已经不在提供的包、手动下载并使用RStudio进行安装
  2. 深圳大学面向全球引进高精尖缺人才!
  3. website for .Net Core
  4. 快速入门系列之 Rust 语言 GitChat连接
  5. 【转】使用PowerApps快速构建基于主题的轻业务应用 —— 进阶篇
  6. C#根据字节数截取字符串【转载】
  7. centos下安装Anaconda
  8. R语言批量下载PubMed摘要
  9. 移动开发之微信小程序——资料集合
  10. MongoVue 使用技巧
  11. 使用Excel制作证件照之替换背景色
  12. 新计算机如何用光盘安装系统,无光驱怎么重装系统|新电脑无光驱重装系统步骤...
  13. html视频播放后自动跳转到页面,在html5视频中跳转到currentTime后自动播放(autoplay after jump to currentTime in html5 video)...
  14. 为知笔记怎么导入文件
  15. Linux配置文件-limits.conf
  16. 微信小程序真机调试手机端在无法连接电脑localhost:3000时如何调试解决办法
  17. 实验六 医学图像的增强(二)
  18. 【杂叙】北京住房公积金提取
  19. mysql实现vpd_VPD(Virtual Private Database) 简单演示
  20. 鸭脚木开花 蜜蜂大搬家

热门文章

  1. USNews:2019世界大学排行榜
  2. spring-boot web 简单的搭建
  3. 微信h5页面提交表单后返回键重复提交的问题
  4. 用ShaderGraph实现卡通的沙滩泡沫效果
  5. Aurora 论坛图片下载
  6. 第5.2节 应用工具包得到幅相加权
  7. 理解Vue中的methods对象方法里的this指向,并解读源码
  8. 逆变电源于滤波电感器
  9. facebook使用教程_您可以在Facebook上使用假名吗?
  10. 2月书讯 | 读新书,过新年。