Форматирование сериализации Json в веб-службе .NET - PullRequest
0 голосов
/ 30 сентября 2010

У меня есть следующий веб-сервис .NET со следующей подписью (IServices.cs):

 [OperationContract]
        [WebInvoke(Method = "GET",
             BodyStyle = WebMessageBodyStyle.Bare,
             ResponseFormat = WebMessageFormat.Json)]
        string ReturnListOfPersons();

Реализация (в Services.svc.cs):

public string ReturnListOfPersons(){
System.Web.Script.Serialization.JavaScriptSerializer oSerializer = new System.Web.Script.Serialization.JavaScriptSerializer();
List<Person> listPersons= myModel.ReturnPersons();
var myList = from a in listPersons 
             select new { FirtName = a.FirstName; LastName = a.LastName};                    
string strJSon = oSerializer.Serialize(myList.Distinct());
StringBuilder sbJSon = new StringBuilder();
sbJSon.AppendFormat("{0}", strJSon);
return sbJSon.ToString();
}

Приведенный выше код упрощен, потому что у меня есть несколько объединений и "try catch".

В любом случае, проблема в том, что возвращаемая строка json:

"[{\"FirstName\":\"Foo\",\"LastName\":\"Bar\"},{\"Hello\":\"Foo\",\"LastName\":\"World\"}]"

Ну, это нормально из-за метода "toString". Но я пытаюсь получить точный формат Json: без двойных кавычек в начале и, конечно, без обратной косой черты с возможностью экранирования специальных символов. Итак, я бы получил:

[{"FirstName":"Foo","LastName":"Bar"},{"Hello":"Foo","LastName":"World"}]

Возможно ли это?

Спасибо,

Привет

1 Ответ

0 голосов
/ 30 сентября 2010

Ваш первый пример не является допустимым JSON. Это то, что вы видите в отладчике Visual Studio, который экранирует строки. На самом деле отправляется второй.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...