У меня есть веб-сервис, который возвращает JSON.При тестировании программы через браузер или тестовую программу в строку всегда добавляются дополнительные обратные косые черты.Например, если я ожидаю, что мой вывод будет выглядеть следующим образом:
{"ack":{"qry":[{"retn":"abcd","desc":"defg"}]
, он фактически будет отображаться как
{\"ack\":{\"qry\":[{\"retn\":\"abcd\",\"desc\":\defg\"}.
Я использую JSON.NET и JsonTextWriter для создания строки.
private string jsonParse(string respStr)
{
string jSonStr;
StringBuilder sb = new StringBuilder();
StringWriter sw = new StringWriter(sb);
JsonWriter writer = new JsonTextWriter(sw);
writer.Formatting = Formatting.None;
List<string> commands = (from word in respStr.Split(':') select word).ToList();
for (int j = 0; j < commands.Count; j += 3)
{
List<string> param = (from par in commands[j + 2].Split(new Char[] { ',', '=' }) select par).ToList();
writer.WriteStartObject();
writer.WritePropertyName(commands[j]);
writer.WriteStartObject();
writer.WritePropertyName(commands[j + 1]);
writer.WriteStartArray();
writer.WriteStartObject();
for (int i = 0; i < param.Count - 1; i += 2)
{
writer.WritePropertyName(param[i]);
writer.WriteValue(param[i + 1]);
}
writer.WriteEndObject();
writer.WriteEndArray();
writer.WriteEndObject();
writer.WriteEndObject();
}
jSonStr = sb.ToString();
return jSonStr;
}
контракт на работу для моего веб-сервиса выглядит следующим образом:
[OperationContract]
[WebGet(ResponseFormat=WebMessageFormat.Json, UriTemplate="/{system}/{command}")]
string getMethod(string system, string command);
и, наконец, программа, которую я использую для тестирования, использует HttpWebRequest следующим образом:
HttpWebRequest GETRequest = (HttpWebRequest)WebRequest.Create(url);
GETRequest.Method = "GET";
Console.WriteLine("Sending GET Request");
HttpWebResponse GETResponse = (HttpWebResponse)GETRequest.GetResponse();
Stream GETResponseStream = GETResponse.GetResponseStream();
StreamReader sr = new StreamReader(GETResponseStream);
Console.WriteLine(sr.ReadToEnd());
есть хоть какая-то подсказка, почему это происходит?