从JSON重新创建数据阅读器-序列化和反序列化
本文关键字:序列化 反序列化 数据 JSON 新创建 创建 | 更新日期: 2023-09-27 18:02:20
我已经为以下问题挣扎了好几天了,最后我希望你能帮助我。
我有一个正在运行的WebService,我需要从中返回不可序列化的IDataReader接口(它必须是DataReader -我知道DataTable或DataSet是可序列化的,但某些要求迫使我使用IDataReader),所以我将其序列化为JSON,可以毫无问题地发送,但现在我需要将JSON反序列化回客户端DataReader。
你们知道我怎么才能做到吗?
我的JSON被序列化为以下格式:
[
{
"Cst_Id": 3,
"Cst_Name": "Test 1adssad",
"CtA_Id": 3
},
{
"Cst_Id": 3,
"Cst_Name": "Test 1adssad",
"CtA_Id": 8
},
.....
]
如果你被迫使用IDataReader,你可以使用。net的协议缓冲区DataReader扩展来序列化/反序列化IDataReader,而不是Json。
协议缓冲区在WebService中是有效的。
的例子:
string connstring1 = "Data Source=server1;Initial Catalog=northwind;user=xxx;password=xxx";
//Serializing an IDataReader into a ProtoBuf:
Stream buffer = new MemoryStream();
using (var c1 = new SqlConnection(connstring1))
{
c1.Open();
// Serialize SQL results to a buffer
using (var command = new SqlCommand("SELECT * FROM products", c1))
using (var reader = command.ExecuteReader())
DataSerializer.Serialize(buffer, reader);
// Deserialize, Read them back
buffer.Seek(0, SeekOrigin.Begin);
using (var reader = DataSerializer.Deserialize(buffer))
{
while (reader.Read())
{
Console.WriteLine(reader["ProductName"]);
}
}
}
}
详细信息,.NET协议缓冲区数据阅读器扩展