【问题标题】:JSON Serialize/Deserialize Varbinary DataColumn becomes String not Byte[]JSON Serialize/Deserialize Varbinary DataColumn 变为 String 而不是 Byte[]
【发布时间】:2012-12-18 22:45:40
【问题描述】:

总体描述

我有一个网络服务:

  • 从我们的 数据库
  • 使用JsonConvert.SerializeObject() 序列化 对象并将该数据作为字符串返回给用户的本地应用程序

然后是我客户的本地应用程序:

  • 使用JsonConvert.DeserializeObject<DataSet>() 将对象转换回 System.Data.DataSet

我的问题

我有一个保存 Varbinary 数据 (Byte[]) 的数据列。这个序列化/反序列化过程最终导致该列数据类型为字符串(我猜是 base64)。

有没有办法在我反序列化 JSON 对象时将此列视为 varbinary?

编辑:响应 cmets

我的问题是我根据数据集的列生成了 CREATE TABLE 脚本。当我遍历列时,我需要指定每列在我用 SQL 生成的这个新表中的数据类型。对于应该是 varbinary 的列,我的 DataColumn 数据类型是字符串,并且与“用户名”等实际字符串列无法区分

【问题讨论】:

  • JSON 表示 byte[] 的唯一方式是 base64 编码字符串。它仍应反序列化为 byte[]。你有什么问题?
  • @eulerfx “问题”是当 JSON 如何序列化字符串和二进制数据时,序列化数据没有区别。当 JSON 反序列化 String 或 Binary 列数据时,一个 String 结果;我尝试过这个。当我查看序列化数据时,这并不奇怪 作为一个拥有如此高的 '声誉”,您在您的专业领域之外的事情上具有如此权威的发言权。

标签: c# .net json


【解决方案1】:

正如@eulerfx 提到的,你可以这样。但是,如果您绝对需要一个数组,请使用 int[] 而不是 byte[]。我需要在其他上下文 (UI) 中将数字数组呈现为数字数组,这对我有用。

【讨论】:

    猜你喜欢
    • 2017-08-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-07
    • 1970-01-01
    • 2012-11-03
    • 2017-09-14
    • 1970-01-01
    相关资源
    最近更新 更多