正确的方法来处理JSON字符串中的&符号发送到REST Web服务

Geo*_*kos 3 c# json httpwebrequest windows-phone-8 datacontractjsonserializer

好,

我正在使用System.Runtime.SerializationDataContractJsonSerialization.

问题是在请求中我发送了一个带有该&字符的属性值.说,AT&T我得到一个错误的回复:Invalid JSON Data.

我认为转义将在库内完成,但现在我看到序列化没有触及&符号&.

是的,对于JSON格式,这是有效的.但是这对我的POST请求来说是一个问题,因为我需要将它发送到一个服务器,如果包含一个&符号会响应错误,因此我在这里.

HttpUtility.HtmlEncodeSystem.Web图书馆,所以要走的路是使用Uri.EscapeUriString.我这样做是为了尝试,但无论如何,没有它,所有请求都工作正常,除了一个&符号值.

编辑:HttpUtility类被移植到Windows Phone SDK,但编码字符串的首选方法应该仍然是Uri.EscapeUriString.

首先想到的是弄脏并开始更换会导致服务器出现问题的特殊字符,但是,我想知道,我应该做的另一个解决方案是,它是否有效且"正确"?

我应该说我用了

// Convert the string into a byte array.
byte[] postBytes = Encoding.UTF8.GetBytes(data);
Run Code Online (Sandbox Code Playgroud)

将JSON转换为a byte[]并写入Stream.和,

request.ContentType = "application/x-www-form-urlencoded";
Run Code Online (Sandbox Code Playgroud)

作为WebRequest.ContentType.

那么,我是因为某种原因而搞砸了?

谢谢.

Geo*_*kos 8

问题是我正在编码整个请求字符串,包括密钥.我有一个请求data={JSON},我正在格式化它,但该{JSON}部分应该只编码.

string requestData = "data=" + Uri.EncodeDataString(json) // worked perfect!
Run Code Online (Sandbox Code Playgroud)

步入愚蠢的洞.