使用 DataContractJsonSerializer 生成轻量级 JSON

2024-02-09

我正在尝试使用 .Net 3.5 中的 C# 和 DataContractJsonSerializer 生成 JSON。问题是我不知道如何构建适合我需要的结果的结构。

我尝试使用哈希表、列表对象和数组列表来重现 PHP 的关联数组,但无法弄清楚如何使用 DataContractJsonSerializer 以最佳方式生成结果,而无需创建自己的递归循环来构建 JSON。

最接近的方法是使用 Dictionary > 方法,但结果太大,因为我无法“命名”键。

这就是我得到的:

[
   {
      "Key":"status",
      "Value":[
         {
            "Key":"value",
            "Value":"ok"
         }
      ]
   },
   {
      "Key":"1",
      "Value":[
         {
            "Key":"name",
            "Value":"Result1"
         },
         {
            "Key":"details",
            "Value":"Result 1 details"
         }
      ]
   },
   {
      "Key":"2",
      "Value":[
         {
            "Key":"name",
            "Value":"Result2"
         },
         {
            "Key":"details",
            "Value":"Result 2 details"
         }
      ]
   },
   {
      "Key":"caller",
      "Value":[
         {
            "Key":"value",
            "Value":"1135345"
         }
      ]
   }
]

这就是我要的:

{
   "status":"ok",
   "response":[
      {
         "id":1,
         "name":"Result1"
         "details":"Result 1 details"
      },
      {
         "id":2,
         "name":"Result2"
         "details":"Result 2 details"
      },
      {
         "id":3,
         "name":"Result3"
         "details":"Result 3 details"
    ],
   "caller":"1135345"
}

有人知道如何使用 C# 生成这段 JSON 而无需加载整个 Json.NET 框架吗?我需要尽快生成它,因为该项目的目标是成为一个网站搜索引擎。


你应该看看使用JavaScript序列化器 http://msdn.microsoft.com/en-us/library/system.web.script.serialization.javascriptserializer.aspx。它是 .NET 框架的一部分(分布在 System.Web.Extensions 中)。要获得您想要的结果,您可以这样做:

var results = new[]
{
    new{id=1,name="Result 1"},
    new{id=2,name="Result 2"},
    new{id=3,name="Result 3"}
};

var js = new JavaScriptSerializer();
var result = js.Serialize(new
{
    status = "ok",
    response = results,
    caller = 1135345
});

您可以使用匿名类或任何现有的类。工作得很好:) 该调用的返回值将是:

{"status":"ok","response":[{"id":1,"name":"Result 1"},{"id":2,"name":"Result 2"},{"id":3,"name":"Result 3"}],"caller":1135345}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 DataContractJsonSerializer 生成轻量级 JSON 的相关文章

  • 为什么我会收到未找到分析器的警告?

    我创建了一个玩具项目来检查最新的 NET 7 预览版 5 和正则表达式代码生成 它效果很好 所以我对现有项目应用了相同的更改 不是为了生产 而是为了个人生产力 由于某种原因 我收到这些警告 CS8032 An instance of ana
  • Caliburn.Micro - ShowDialog() 如何关闭对话框?

    EDIT 新信息 刚刚设法让记录器工作 老实说 我不知道 cm 有一个 并且在尝试使用时收到此消息TryClose TryClose requires a parent IConductor or a view with a Close m
  • 如何在特定时间以毫秒精度触发 C# 函数?

    我有两台计算机 它们的时间通过 NTP 同步 确保时间仅相差几毫秒 其中一台计算机将通过 TCP 向另一台计算机发送一条消息 以在两台计算机上的未来指定时间启动某个 c 函数 我的问题是 如何在特定时间以毫秒精度 或更好 触发 C 中的函数
  • 生成多个随机数

    我想生成 25 个唯一的随机数并将它们列在控制台中 数字的长度应至少为 10 个字符 有什么简单的方法可以做到这一点吗 尝试将数字构建为字符串 并使用 HashSet 确保它们是唯一的 Random random new Random Ha
  • 自动映射器多对多 stackoverflowException

    我遇到以下映射的堆栈溢出 Mapper CreateMap
  • 平滑手绘曲线

    我有一个允许用户绘制曲线的程序 但这些曲线看起来不太好 它们看起来摇摇欲坠 而且是手绘的 所以我想要一种能够自动平滑它们的算法 我知道平滑过程中存在固有的模糊性 因此它不会每次都完美 但这种算法似乎确实存在于多个绘图包中 并且它们工作得很好
  • 在没有 epsilon 的情况下可以将浮点数与 0.0 进行比较吗?

    我知道 要比较两个浮点值 需要使用一些 epsilon 精度 因为它们并不精确 但是 我想知道是否存在边缘情况 我不需要那个 epsilon 特别是 我想知道这样做是否总是安全的 double foo double x if x lt 0
  • 如何从 Qt 应用程序通过 ODBC 连接到 MySQL 数据库?

    我有一个新安装的 MySQL 服务器 它监听 localhost 3306 从 Qt 应用程序连接到它的正确方法是什么 原来我需要将MySQL添加到ODBC数据源 我在遵循这个视频教程后做到了这一点 https youtu be K3GZi
  • Monotouch全局异常处理

    我在野外发现了一只令人讨厌的虫子 但我无法确定它的具体情况 有没有办法拥有全局 Try Catch 块 或者有办法处理 Monotouch 中未处理的任何异常 我可以包起来吗UIApplication Main args 在 try cat
  • 组合框下拉位置

    我有一个最大化的表单 其中包含 500px 的组合框控件 停靠在右上角 Width 尝试打开组合框后 列表的一半超出了屏幕 如何强制列表显示在表单中 棘手的问题 我找不到解决这个问题的好办法 只是一个解决方法 添加一个新类并粘贴如下所示的代
  • 如何减少 MinGW g++ 编译器生成的可执行文件的大小?

    我有一个简单的 Hello world C 程序 在 Win XP 下由 MinGW g 编译器编译为 500kB 可执行文件 有人说这是由于iostream的库和静态链接libstdc dll Using s链接器选项有点帮助 减少了 5
  • 如何将 Q 格式整数转换为浮点数(反之亦然)?

    我四处搜寻 找不到一个很好的问题来回答这个问题 给定一个整数 使用Q Format https en wikipedia org wiki Q number format 如何将该数字转换为普通浮点类型 反之亦然 如何将浮点类型转换为Q F
  • 控制台应用程序中使用 Unicode 字符的 _tprintf

    我正在从 Unicode 构建的控制台应用程序 使用 C 和 Visual Studio 2008 执行这个简单的输出 此代码旨在在 Windows 上运行 tprintf L Some sample string n 一切正常 但是如果我
  • 我在使用 ado.net 时收到错误 Argument 2 may not be pass with ref keywords

    int t 0 cmd Parameters AddWithValue Res ref t 我在第二行收到错误 参数 2 不能与 ref 关键字一起传递 您只能通过引用传递参数ref if the 范围 is a ref参数也是如此 Add
  • 配置:错误:无法运行C编译的程序

    我正在尝试使用 Debian Wheezy 操作系统在我的 Raspberry Pi 上安装不同的软件 当我运行尝试配置软件时 我尝试安装我得到此输出 checking for C compiler default output file
  • 如何在 C# 中更改公共 IP 地址

    我正在创建一个 C winform 应用程序 我想在其中更改公共 IP 地址 而不是像 Hotspot Shield ZenMate OpenVPN 等那样更改 IPv4 地址 我已经检查了以下链接 但没有找到足够的帮助 所以我发布了这个问
  • Type.GetInterfaces() 仅适用于声明的接口

    首先 像这样的问题有很多 也许有些OP甚至在问同样的问题 问题是这些问题的答案 无论是否接受 都没有真正回答这个问题 至少我找不到 如何确定类直接声明的接口 而不是由父级或声明的接口继承的接口 e g interface I interfa
  • Xcode 7 调试器不会中断内联标头函数

    过去五年我一直在各种 C 项目中使用 Xcode 没有出现这个问题 今天 我打开了一个较旧的项目 大约 2 年前 并尝试通过在该函数中放置一个活动断点来调试头文件中的内联函数 由于某种原因 调试器不会中断此代码 但是 如果我在调用该函数的
  • 使用 CodeDOM 将程序集添加到 BuildManager 会导致间歇性错误

    我正在使用 CodeDOM 在运行时创建内存中程序集 如下所示 public Assembly Compile CodeCompileUnit targetUnit string path Path GetDirectoryName new
  • 将一个 IEnumerable 拆分为多个 IEnumerable

    我是 linq 新手 我需要根据指示器将 Couple string text bool Indicator 类型的 IEnumerable 拆分为多个 IEnumerable 我尝试使用skipWhile 和 TakeWhile 但没有找

随机推荐

  • Android:获取Facebook好友列表

    我正在使用脸书软件开发工具包 https github com facebook facebook android sdk 在墙上张贴消息 现在我需要获取 Facebook 好友列表 有人能帮我解决这个问题吗 编辑 try Facebook
  • Android 设置视图位置 - setY 与 setTop

    我打算以编程方式移动按钮的位置 按钮处于相对布局 我研究发现我们可以使用 setY or setTop 看起来它们的工作原理应该是一样的 但就我而言 setTop 根本不改变位置并且 setY 仅有效 我不确定我误解了什么 但这对我来说很奇
  • 如何摆脱 VS Code 中的“同步更改 1 ↑”按钮?

    最近 由于某种原因 每次我想要将更改推送到 GitHub 存储库时 我都必须按此按钮 我不记得是否有一个设置是我不小心切换的 我也从未在 VS Code 环境之外更改我的存储库 我正在使用 Gatsby GitHub Netlify 设置
  • 软键盘覆盖 PopupWindow 中的 EditText

    我整理了一个简单的测试项目 它显示一个包含 EditText 的 PopupWindow 在 Android 2 2 上 当我点击 EditText 时 会显示软键盘 正如我所期望的那样 但是 软键盘覆盖了 EditText 并且我无法平移
  • APC缓存碎片问题

    我在 CentOS 服务器 5 上运行 APC php 缓存 每天 13 000 次访问 运行 php 5 3 3 APC 3 1 4 和 4Gb RAM 在过去的几周里 我经历了很多 unable to allocate memory f
  • 响应图表不受控制地增长

    我有一个 vue 组件 它实现了 vue chartjs 的 Horizo ntalBar 组件 我将其渲染为 bootstrap vue 表中的单元格 我的愿望是让图表保持固定的高度 但随着窗口的增大 缩小而水平缩放 当页面首次加载时 图
  • 使用堆栈反转数组

    我正在尝试使用堆栈反转数组 但是 我收到错误arr i stack top 在 Eclipse 中解决它的建议是将其更改为arr i stack pop 或添加演员阵容 还有其他方法吗 或者我犯了一个错误 我看到教程和问题询问如何使用堆栈反
  • 如何在 R 中使用 H2o 从 SQL Server 加载表?

    我尝试使用 h2o 将表加载到 R 中 但出现以下错误 my data lt h2o import sql table my sql conn table username password 错误 意外的 HTTP 状态代码 500 服务器
  • Javascript - innerHTML 不适用于 HTML 选择菜单

    在我的 HTML 页面中 我有 2 个选择菜单 其 ID 为 月 和 日 页面加载时 日 为空 月 有 12 个选项 其值 1 12 对应于一月至十二月 month 有一个 onchange 事件调用此函数 function showOut
  • 属性 KeyValuePair.Value 没有 setter

    我正在使用一个Dictionary
  • Java 中的时区

    我允许我的网络应用程序上的用户根据他们选择的时区安排活动 我想向最终用户提供一份良好的时区列表 然后将其轻松转换为java util TimeZone服务器端的对象 String TimeZone getAvailableIds 是我可以使
  • 从 vs 2017 以编程方式连接到 TFS

    我在用TFS 15 x package Error Microsoft TeamFoundation TeamFoundationServerUnauthorizedException TF30063 您无权访问 https myproje
  • 使用钩子时,React 批量状态更新功能是否有效?

    对于类组件 this setState如果在事件处理程序内部 则调用批处理 但是如果状态在事件处理程序之外更新并使用 会发生什么useState hook function Component const a setA useState a
  • StandardScaler -ValueError:输入包含 NaN、无穷大或对于 dtype('float64') 来说太大的值

    我有以下代码 X df X as matrix header 1 col num scaler preprocessing StandardScaler fit X X nor scaler transform X 并得到以下错误 File
  • 如何使用 Objective-C 判断 iPhone 是否连接到 wifi 网络?

    在 Objective C iPhone 应用程序的上下文中 我需要能够判断 iPhone 是否已连接到 wifi 网络 并在可能的情况下侦听此状态的变化 有谁知道如何做到这一点 谢谢 加布伊 正如其他人提到的 可达性样本 https de
  • 在 Reactjs 中的 EsLint“react / jsx-props-no-spreading”错误中禁用

    安装 EsLint 后 我 出现的错误之一如下 禁止传播 propeslint react jsx props no spreading 我想在 EsLint 配置中创建一条规则来忽略此错误 但我发现的示例不起作用 这是创建全局异常的格式
  • 正则表达式 Windows 路径验证器

    我试图找到一个针对 Javascript 的 Windows 文件路径验证 但似乎没有一个能够满足我想要的要求 所以我决定自己构建它 要求如下 路径不能为空 可能以 x x 开头 后跟文件名 无文件 需要延期 文件名不能包含以下特殊字符 文
  • PHP:可以包含 file_exists() 说不存在的文件

    在我的脚本中 我设置了包含路径 以便应用程序的另一部分也可以包含文件 检查文件是否存在 然后包含它 但是 在我设置包含路径后 file exists 报告该文件不存在 但我仍然可以包含相同的文件
  • PHP 中静态属性的神奇 __get getter

    public static function get value 不起作用 即使它起作用 碰巧我已经需要神奇的 get getter 作为同一个类中的实例属性 这可能是一个是或否的问题 那么 有可能吗 不 这是不可能的 引用 get 的手册
  • 使用 DataContractJsonSerializer 生成轻量级 JSON

    我正在尝试使用 Net 3 5 中的 C 和 DataContractJsonSerializer 生成 JSON 问题是我不知道如何构建适合我需要的结果的结构 我尝试使用哈希表 列表对象和数组列表来重现 PHP 的关联数组 但无法弄清楚如