簡體   English   中英

從JSON重新創建DataReader-序列化和反序列化

[英]Recreating DataReader from JSON - Serialization and Deserialization

幾天來我一直在努力解決以下問題,最后我希望您能幫助我。

我有一個正在運行的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擴展而不是Json來序列化/反序列化IDataReader。

協議緩沖區在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的協議緩沖區DataReader擴展。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM