C# 传输前操作序列化对象的字符串/缓冲区

C# 传输前操作序列化对象的字符串/缓冲区,c#,android,json,xamarin.android,json.net,C#,Android,Json,Xamarin.android,Json.net,为了解决android应用程序中windows与linux换行符不匹配的问题,我打算简单地用ASP.NET WebAPI REST服务传入应用程序的所有数据\r\n替换所有子字符串,并在数据传出时执行相反的操作 这对于入站数据来说非常简单,因为我已经有了一个字符串的引用,该字符串保存了序列化json数据的中间副本,我只是在这个缓冲区上做了一个替换: 因此,我正在寻找一种方法,以便在传输序列化json之前获得保存该json的缓冲区,以便用一个字符串替换所有字符串。我重构了我的写入/发送代码,如下所

为了解决android应用程序中windows与linux换行符不匹配的问题,我打算简单地用ASP.NET WebAPI REST服务传入应用程序的所有数据\r\n替换所有子字符串,并在数据传出时执行相反的操作

这对于入站数据来说非常简单,因为我已经有了一个字符串的引用,该字符串保存了序列化json数据的中间副本,我只是在这个缓冲区上做了一个替换:


因此,我正在寻找一种方法,以便在传输序列化json之前获得保存该json的缓冲区,以便用一个字符串替换所有字符串。

我重构了我的写入/发送代码,如下所示:

//...
string url = GetUrlRequest();

StringBuilder sb = new StringBuilder();
TextWriter textWriter = new StringWriter(sb);
JsonTextWriter jsonTextWriter = new JsonTextWriter(textWriter);

JsonSerializer serializer = JsonSerializer.Create(serializerSettings);
serializer.Serialize(jsonTextWriter, tabletData);

/////////////////////////////////////////////////////////////////////////
string sendBuffer = sb.ToString();
sendBuffer = sendBuffer.Replace("\n","\r\n");
/////////////////////////////////////////////////////////////////////////    

WebRequest request = WebRequest.Create(url);
//...

Stream requestStream = request.GetRequestStream();

streamWriter = new StreamWriter(requestStream, new UTF8Encoding(false, true));
streamWriter.Write(sendBuffer);

jsonTextWriter.Close();
streamWriter.Close();
requestStream.Close();

为什么你认为你的问题在于新线角色?它是独立于设备/平台的json对象。此移动版本的桌面上下文部分需要\r\n适当显示换行符。此外,android将打印为一个不可打印的空间,这让用户有机会在,这就是为什么在输入的过程中需要将其转换为\n。它仍然与json无关,请关注您在jsonyour对象中发送的内容。@L.B这样做需要我清除任何包含带换行符的字符串成员的对象的所有属性。我正试图在一个地方处理这一切,就像read方法一样。我认为我的写例程需要重构才能实现这一点。
//...
string url = GetUrlRequest();

WebRequest request = WebRequest.Create(url);
//...

Stream requestStream = request.GetRequestStream();
StreamWriter streamWriter = new StreamWriter(requestStream, new UTF8Encoding(false, true));
JsonTextWriter jsonTextWriter = new JsonTextWriter(streamWriter);

serializer = JsonSerializer.Create(serializerSettings);
serializer.Serialize(jsonTextWriter, tabletData);

jsonTextWriter.Close();
streamWriter.Close();
requestStream.Close();
//...
//...
string url = GetUrlRequest();

StringBuilder sb = new StringBuilder();
TextWriter textWriter = new StringWriter(sb);
JsonTextWriter jsonTextWriter = new JsonTextWriter(textWriter);

JsonSerializer serializer = JsonSerializer.Create(serializerSettings);
serializer.Serialize(jsonTextWriter, tabletData);

/////////////////////////////////////////////////////////////////////////
string sendBuffer = sb.ToString();
sendBuffer = sendBuffer.Replace("\n","\r\n");
/////////////////////////////////////////////////////////////////////////    

WebRequest request = WebRequest.Create(url);
//...

Stream requestStream = request.GetRequestStream();

streamWriter = new StreamWriter(requestStream, new UTF8Encoding(false, true));
streamWriter.Write(sendBuffer);

jsonTextWriter.Close();
streamWriter.Close();
requestStream.Close();