2010-09-30 5 views
0

У меня есть следующие .NET веб-службы со следующей подписью (IServices.cs):Форматирование serializarion JSon в .NET Web Service

[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(); 
} 

Код, приведенный выше, упрощен, так как у меня есть несколько соединений и «попробуйте уловы».

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

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

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

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

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

Спасибо,

С уважением

ответ

0

Ваш первый пример не является действительным JSON. Это то, что вы видите в отладчике Visual Studio, который избегает строк. То, что фактически отправлено, является вторым.

+0

Вы правы. Теперь я могу «предупредить» возвращенную строку на стороне клиента, и она отображает второй пример json, который я дал. Thans;) – Zakaria