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

好,

我正在使用System.Runtime.SerializationDataContractJsonSerialization

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

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

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

HttpUtility.HtmlEncode位于System.Web库中,因此可以使用Uri.EscapeUriString 。 我这样做是为了尝试,但无论如何,没有它,所有请求都正常工作,除了一个&符号值。

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

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

我应该告诉我使用

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

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

 request.ContentType = "application/x-www-form-urlencoded"; 

作为WebRequest.ContentType

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

谢谢。

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

 string requestData = "data=" + Uri.EncodeDataString(json) // worked perfect! 

愚蠢的洞进入。

您是否尝试用&更换&符号& 对于POST?