专业的编程技术博客社区

网站首页 > 博客文章 正文

C# 系列AI转换动态Json字符串转换动态对象并导出Excel/CSV

baijin 2024-09-17 12:00:06 博客文章 4 ℃ 0 评论

在使用AI工具进行数据获取时,我想让AI给我返回Josn数据,我获取数据后是字符串。字符串的类型是每次返回有规则的,但是上次 和下次返 回的是没有规则的。

所谓的规则是:本次返回的是json字符串是:

{ "id": 1, "name": "张三", "username": "zhangsan", "email": "zhangsan@example.com", "registration_date": "2023-04-01T12:00:00Z", "last_login": "2023-04-05T08:30:00Z", "status": "active"}

下次返回的数据是:

{ "studentId": "S02", "name": "韩梅梅", "age": 8, "gender": "女"}

如果这样的数据让你导出excel 或者 csv 你是不是头大了。

基于这样的场景我先到了动态代码Dynamic 下的 ExpandoObject 一个密封类。


ExpandoObject功能是:表示一个对象,其成员可以在运行时动态添加和删除。

而他继承的接口是

ICollection<KeyValuePair<string, object?>>IEnumerable<KeyValuePair<string, object?>>IEnumerable, IDictionary<string, object?>

看到这里就知道是一个动态的集合。

没错,我准备把AI返回的数据进行动态接收。

在接收前,AI返回的json数据外会带着一些啰里啰唆的其他话术,这里我用一个正则进行数据清洗。

 Match match = Regex.Match(item, @"\[\s*(\{.*?\})\s*\]", RegexOptions.Singleline);

如果你的json是一个字符串集合。可以循环进行清洗。

清洗后的数据我们这样操作。

 List<IDictionary<string, object>> translations = new List<IDictionary<string, object>>(); string cleanJsonData = match.Value;var data = JsonConvert.DeserializeObject<List<ExpandoObject>>(cleanJsonData);translations.AddRange(data.Select(e => (IDictionary<string, object>)e));

translations 就是我们清洗过后的数据,此时就可以导出csv或者excel数据了。

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表