从 SqlDataReader 转换为 JSON

2023-11-29

public string toJSON(SqlDataReader o)
{
    StringBuilder s = new StringBuilder();
    s.Append("[");
    if (o.HasRows)
        while (o.Read())
            s.Append("{" + '"' + "Id" + '"' + ":" + o["Id"] + ", "
            + '"' + "CN" + '"' + ":" + o["CatName"] + ", "
            + '"' + "Ord" + '"' + ":" + o["Ord"] + ","
            + '"' + "Icon" + '"' + ":" + o["Icon"] + "}, ");
    s.Remove(s.Length - 2, 2);
    s.Append("]");
    o.Close();
    return s.ToString();
}

我在这里使用我自己的函数来进行序列化。我需要知道这是否是一个好方法,或者我应该使用另一种方法。顺便说一句,我尝试过使用JavaScriptSerializer但这不适用于 SqlDataReader 。谢谢


如果您想要转换为任意 JSON 的内容,您可以通过将其序列化为 Dictionary(Of string, object) 来进行转换:

public IEnumerable<Dictionary<string, object>> Serialize(SqlDataReader reader)
{
    var results = new List<Dictionary<string, object>>();
    var cols = new List<string>();
    for (var i = 0; i < reader.FieldCount; i++) 
        cols.Add(reader.GetName(i));

    while (reader.Read()) 
        results.Add(SerializeRow(cols, reader));

    return results;
}
private Dictionary<string, object> SerializeRow(IEnumerable<string> cols, 
                                                SqlDataReader reader) {
    var result = new Dictionary<string, object>();
    foreach (var col in cols) 
        result.Add(col, reader[col]);
    return result;
}

然后使用 NewtonSoft.Json JsonConvert 对象获取 JSON:

var r = Serialize(reader);
string json = JsonConvert.SerializeObject(r, Formatting.Indented);

UPDATE:如果您只想使用内置方法,并且恰好使用 MVC,则可以在新序列化的 上使用内置 Json 帮助器方法:

JsonResult Index(int id) {
    var r = Serialize(reader);
    return Json(r, JsonRequestBehavior.AllowGet);
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

从 SqlDataReader 转换为 JSON 的相关文章

随机推荐

  • 为什么nslookup.exe可以解析指定的DNS服务器,但dnsapi.dll中没有相应的API?

    nslookup exe www google com 127 0 0 1 该命令可以使用 DNS 服务器 127 0 0 1 进行解析 不可能在 75 0 KB 的 nslookup exe 中实现全栈 DNS 协议解析器 因此它必须使用
  • 当自动化 Eclipse 的“导出为功能”时,Maven/Tycho 看不到我的插件

    我的工作区中有一个插件和一个功能项目 当我通过 文件 gt 导出为 gt 功能 手动导出功能时 一切正常 我正在尝试编写一个自动插件构建和导出脚本来摆脱这种苦差事 我将功能项目转换为 Maven 项目 并用以下内容填充 pom xml
  • 如何使用多个命令运行 NSTask

    我正在尝试让 NSTask 运行如下命令 ps clx grep 查找器 awk 打印 2 这是我的方法 void processByName NSString name NSTask task1 NSTask alloc init NSP
  • Angular:添加指令时控制器未定义

    向我的网站添加指令时出现以下错误 Error ng areq Argument MainController is not a function got undefined 仅当我在网站中包含welcome directive welcom
  • PouchDB + 冲突解决

    我有一个关于难题的非常简单的问题 PouchDB 中的冲突解决如何工作 我查看了文档 并快速谷歌搜索 但没有帮助 那么 如何在使用 PouchDB 的应用程序中处理冲突管理 以下是在 CouchDB 中的操作方法 您可以直接将其转换为 Po
  • Spring Boot - 从属性文件注入映射[重复]

    这个问题在这里已经有答案了 属性文件如下所示 url1 path to binary1 url2 path to binary2 根据this我尝试了以下方法 Component EnableConfigurationProperties
  • 如何更改 WooCommerce 缩略图裁剪位置?

    我正在尝试更改 WooCommerce 缩略图裁剪位置 我发现这段代码可以帮助更改大小 add action init yourtheme woocommerce image dimensions 1 Define image sizes
  • 在 iFrame 中应用 CSS

    我正在尝试将广告图像的宽度从像素更改为百分比 我正在使用 Google DoubleClick 或 DFP 它会自动将您的广告图像放入 iframe 中 从而很难更改图像的实际尺寸 因此 我将图像宽度从像素更改为百分比的方法是 我在图像广告
  • 在 vhdl 中计算(并验证)以太网 FCS (crc32)

    我正在使用Spartan 3E 入门套件我正在尝试通过 100MBit 链路接收以太网帧 对于那些不知道的人 该板具有 PHY 芯片 暴露了 25MHz 的接收时钟 我 几乎 已经通过缓冲接收到的帧并通过串行链路重新发送它们来验证接收工作正
  • 如何从master上找到jenkins节点的ip地址

    从主节点脚本控制台或从系统 groovy 脚本 也在主节点上运行 运行 如何获取从节点的 IP 地址 我希望这个简单的脚本就足够了 import java net for slave in Jenkins instance slaves h
  • 列表追加正在覆盖我以前的值[重复]

    这个问题在这里已经有答案了 我正在尝试动态构建 ElasticSearch 的查询 这是我的代码 import json query string person human query query query query query boo
  • 如何允许用户在 ChicagoBoss 中下载文件

    我生成一个 xml 并将其存储到某个位置 比如myproject media doc xml因为我是 erlang 的新手开发人员 我所知道的是我必须设置请求标头 例如 Content Disposition attachment file
  • 如何从 Postman/WebSocket King 调用 SignalR Core hub 方法

    我有一个 SignalR Core 集线器 我可以使用 Postman 或 WebSocket King 等客户端连接到同一个集线器 但是 我无法调用需要参数的集线器方法 可以从 SignalR JS 客户端轻松调用相同的方法 我检查了浏览
  • Maven 类路径顺序问题

    有谁知道在 Maven2 中设置特定类路径顺序的方法 而不是我目前遇到的随机顺序 想要这样做有很多合理的理由 供应商提供了一个补丁 jar 其中包含先前发布的 jar 的重写类 因此该补丁 jar 必须出现在类路径排序中的第一个位置 通过遍
  • 如何将 PDF 文件中的特定 RGB 颜色更改为特定 CMYK 颜色?

    如果我有一个 PDF 文件 其中包含特定 RGB 颜色的对象 文本 艺术线条 并且我想将这些对象转换为具有特定的 CMYK 颜色 有哪些可用的库可以让我做到这一点 请注意 我不需要从任意 RGB 值 映射 到 合适的 CMYK 值的能力 这
  • Scanf_s 警告?跳过用户输入(主题:Runge-Kutta、流行病模拟)

    这是我的第一篇文章 我不得不承认 我在编程方面很糟糕 我是班上那个拼命工作的人 但似乎永远无法像我的其他同学那样掌握编程 所以请保持友善 我将在下面尝试解释我的问题 我有以下代码 已删除注释 但是当我运行它时 我收到类似于下面列出的警告 另
  • 61 秒不活动后,Indy 错误 10038“非套接字上的套接字操作”

    我想从 FTP 服务器下载一些大文件 GB 第一个文件的下载始终有效 然后 当尝试获取第二个文件时 我得到 套接字错误 10038 非套接字上的套接字操作 错误出现在 获取 上 在 获取 之后 我看到这些消息 通过 FTP 状态事件 Sta
  • 是否有一个内置函数可以打印对象的所有当前属性和值?

    所以我在这里寻找的是类似 PHP 的东西print r功能 这样我就可以通过查看相关对象的状态来调试我的脚本 你要vars 夹杂pprint from pprint import pprint pprint vars your object
  • WiX可配置目录的含义是什么?

    我有一个测试安装程序 有 2 个功能 A 和 B A 有 2 个文件 a1 和 a2 B 还有 2 个文件 b1 和 b2 每个文件属于单个组件 Feature A a1 a2 Feature B b1 b2 每个文件的安装位置如下 有些混
  • 从 SqlDataReader 转换为 JSON

    public string toJSON SqlDataReader o StringBuilder s new StringBuilder s Append if o HasRows while o Read s Append Id o