在UWP应用程序中序列化对象

时间:2016-01-30 15:55:52

标签: c# serialization uwp

我正在尝试将对象传递给StreamSocket,因此我需要先将其序列化,然后才能执行此操作。

我查看了BinaryFormatter,但在UWP中似乎没有? 有关如何序列化对象的任何建议,最好是以最紧凑的方式。

2 个答案:

答案 0 :(得分:3)

您可以序列化自己的.NET对象; JSON.NET是一个非常受欢迎的选择,但如果您不想要任何依赖项,内置的DataContractSerializer也应该有效。

您无法序列化任何WinRT对象。

答案 1 :(得分:0)

如果要将对象序列化为json,首先必须将Newtonsoft.Json添加到项目中。

要安装Json.NET,请在程序包管理器控制台中运行以下命令:

  

PM>安装包Newtonsoft.Json

然后使用此代码传递您的对象:

(注意:在此示例中,我假设您的服务器和客户端相同,并且您使用的端口是:1800。)

        try
        {
            Windows.Networking.Sockets.StreamSocket socket = new Windows.Networking.Sockets.StreamSocket();
            Windows.Networking.HostName serverHost = new Windows.Networking.HostName("127.0.0.1");
            string serverPort = "1800";
            socket.ConnectAsync(serverHost, serverPort);
            var json = JsonConvert.SerializeObject(object);
            byte[] buffer = Encoding.UTF8.GetBytes(json);
            Stream streamOut = socket.OutputStream.AsStreamForWrite();
            StreamWriter writer = new StreamWriter(streamOut);
            var request = json;
            writer.WriteLine(request);
            writer.Flush();

            Stream streamIn = socket.InputStream.AsStreamForRead();
            StreamReader reader = new StreamReader(streamIn);
            string response = reader.ReadLine();
        }
        catch (Exception e)
        {
            var err = e.Message;
            //Handle exception here.            
        }

如果您有任何其他问题,请通知我。