Да, вам нужно выполнить соответствующее экранирование JSON. Лично я бы использовал библиотеку JSON для этого - я использовал Json.NET в Windows Phone 7, и она работала нормально.
Вы создадите свой запрос как объект JSON - так, чтобы вообще не указывать саму текстовую форму JSON - и затем попросите его отформатировать себя в строку (просто вызвав ToString
). Например:
using System;
using Newtonsoft.Json.Linq;
class Program
{
static void Main(string[] args)
{
string text = "Hello\neverybody";
JObject json = new JObject
{
{ "requests", new JArray
{
new JObject
{
{ "sendMessage", new JObject
{
{ "body", text }
}
}
}
}
}
};
Console.WriteLine(json);
}
}
Выход:
{
"requests": [
{
"sendMessage": {
"body": "Hello\neverybody"
}
}
]
}
(Очевидно, что вам не нужно использовать столько пробелов, сколько нужно, если вы не хотите. Вам также не нужно использовать инициализаторы объектов.)
РЕДАКТИРОВАТЬ: Хорошо, с изменениями в соответствии с просьбой:
JObject json = new JObject
{
{ "sid", sid },
{ "version", "0.6" },
{ "requests", new JArray
{
new JArray
{
new JObject
{
{ "sendMessage", new JObject
{
{ "body", text },
{ "recipient", recipient },
{ "legacy", false },
{ "thread_key", threadKey }
}
}
}
}
}
}
};
Результат:
{
"sid": "sid",
"version": "0.6",
"requests": [
[
{
"sendMessage": {
"body": "Hello\neverybody",
"recipient": "foo@bar.com",
"legacy": false,
"thread_key": "T1"
}
}
]
]
}