欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Excel 表格数据转 JSON 字符串、JSON 字符串快速生成 C# 实体类

程序员文章站 2022-03-26 16:52:35
...

有时候我们需要从 Excel 表格中将整理好的数据,转换成我们需要的 JSON 字符串,以便读取数据,如何实现呢 ?

这里推荐一个在线 JSON 校验格式化工具的网站 : BeJSON,里面涵盖了几乎和 Json 相关的所有功能。

接下来进入博客正文。

一:Excel 表格数据转 JSON 字符串

以我经常玩的游戏《英雄联盟》为例,将整理好的英雄技能整理成一张表格。如下图所示
Excel 表格数据转 JSON 字符串、JSON 字符串快速生成 C# 实体类
操作步骤
选中表格内容并复制,在 BeJSON 网站选择【JSON】,然后选择【Excel 转 Json】,将复制的内容粘贴到文本框中,最后点击【转换】按钮,就可以将 Excel 表格数据转 JSON 字符串。动态效果演示图如下
Excel 表格数据转 JSON 字符串、JSON 字符串快速生成 C# 实体类
有一点需要注意下,复制后的内容会在最后会自动换行,需要将光标定位到下图所示位置,否测在转换后的 Json 数据中最后会多一个逗号,这是不符合 Json 语法格式的。Excel 表格数据转 JSON 字符串、JSON 字符串快速生成 C# 实体类

二:JSON 快速生成 C# 实体类

第一步
复制转换后的 Json 数据,选择【JSON】,然后选择【JSON 在线编辑器】,删掉一些不需要的地方,动态效果演示图如下
Excel 表格数据转 JSON 字符串、JSON 字符串快速生成 C# 实体类
在【JSON在线编辑器】页面,有两个按钮需要说明一下,如下图所示
Excel 表格数据转 JSON 字符串、JSON 字符串快速生成 C# 实体类
左边的按钮是未压缩版,数据更直观,明了,但占用空间也会更大一点。
右边的按钮是压缩版,会压缩 JSON 数据,清除所有的空白字符,所以看着数据会杂乱无章,但占用空间会更小。

第二步
复制 JSON 数据,选择【后端】,点击【JSON 生产 C# 实体类】,粘贴数据到文本框,最后点击【生产实体类】,动态效果演示图如下
Excel 表格数据转 JSON 字符串、JSON 字符串快速生成 C# 实体类
可以看到,JSON 已经快速生成了对应的 C# 实体类,复制生成的 C# 实体类到脚本即可,如下代码(修改后的)

/// <summary>
/// 英雄数据管理类
/// </summary>
public class HeroData
{
    // 英雄名称
    public string 名字 { get; set; }
    // 英雄职业
    public string 职业 { get; set; }
    // 英雄Q技能
    public string Q技能 { get; set; }
    // 英雄W技能
    public string W技能 { get; set; }
    // 英雄E技能
    public string E技能 { get; set; }
    // 英雄R技能
    public string R技能 { get; set; }
    // 英雄被动技能
    public string 被动技能 { get; set; }
}

public class Root
{
    public List<HeroData> HeroList { get; set; }
}

因为我 Excel 中写的是"Q 技能",中间有一个空格,生成的 C# 实体类中字段也是 public string Q 技能; 在 C# 中字段是不能含有空格的,这里我手动将字段中的空格去掉了,JSON 数据中的空格也要去掉。

最后需要特别说明的是(很多人都踩过的坑),如下图
Excel 表格数据转 JSON 字符串、JSON 字符串快速生成 C# 实体类
JSON 数据中 A 位置的名称要保持与 C# 实体类中 B 位置的名称一样,否则会无法正确读取数据。

这里我将 C# 实体类中 B 位置名称改为 HeroList ,JSON 数据中 A 位置的名称不变,读取数据的时候将会报如下错误。
Excel 表格数据转 JSON 字符串、JSON 字符串快速生成 C# 实体类
你将 JSON 数据中 A 位置名称 也改为 HeroList 后 ,再读取数据时就不会再报错了。

三:从 JSON 中读取数据

这里我新建一个 txt ,将 JSON 数据复制到该 txt 中,我们点击按钮获取第一位英雄的名称以及其 R 技能,代码如下

    void HeroData()
    {
        var jsonPath = "D:/Users/suxing/Desktop/Heros.txt";
        using (TextReader tr = File.OpenText(jsonPath))
        {
            var heroData = tr.ReadToEnd();
            var rootData = JsonMapper.ToObject<Root>(heroData);
            Debug.Log("名字:"+rootData.HeroList[0].名字+" R 技能:"+ rootData.HeroList[0].R技能);
            tr.Close();
        }
    }

动态效果演示图如下
Excel 表格数据转 JSON 字符串、JSON 字符串快速生成 C# 实体类
ok,关于 Excel 表格数据转 JSON 字符串、JSON 字符串快速生成 C# 实体类 就说到这里。


结束语

如果这篇博客有幸帮到了您,欢迎点击下方链接,和更多志同道合的伙伴一起交流,一起进步。

Excel 表格数据转 JSON 字符串、JSON 字符串快速生成 C# 实体类
Excel 表格数据转 JSON 字符串、JSON 字符串快速生成 C# 实体类

相关标签: Excel