Чтение WCF JSON Сериализация - PullRequest
       6

Чтение WCF JSON Сериализация

1 голос
/ 17 декабря 2011

Я недавно пытался вывести JSON, используя встроенную функциональность WCF, а не комплект JSON.net на Newtonsoft.

Я получаю вывод JSON в порядке, но у меня все еще остается какая-то странная разметка сериализации по умолчанию, оставленная WCF.

Вот что выводится клиенту, выполняющему GET:

<string xmlns="http://schemas.microsoft.com/2003/10/Serialization/">{"LobbyID":2,"LobbyID2":0}</string>

Я бы хотел по возможности избавиться от "xmlns =" ​​http://schemas.microsoft.com/2003/10/Serialization/", так что это просто прямой ответ типа данных JSON.

Вот класс лобби с соответствующими DataContracts:

[DataContract(Name = "LobbyContract", Namespace = "xx")]
public class Lobby
{
    [DataMember(Name="LobbyID")]
    private int LobbyID;

    [DataMember(Name = "LobbyID2")]
    private int LobbyID2;

и тогда у меня есть эта функциональность вызова:

    [OperationContract]
    [Description("PlaceHolder")]
    [WebGet(UriTemplate = "xxx/xx/{gameID}/{format}") ]
    public string FindGameProposals(string gameID, string format)
    {

        Lobby lobby = new Lobby();
        lobby.SetLobbyID(Convert.ToInt32(gameID));

        string returnValue = "";
        if (format == "xml")
        {

        }

        else if (format == "json")
        {

            DataContractJsonSerializer serializer = new DataContractJsonSerializer(lobby.GetType());
            MemoryStream memoryStream = new MemoryStream();
            serializer.WriteObject(memoryStream, lobby);

            // Return the results serialized as JSON
            string json = Encoding.Default.GetString(memoryStream.ToArray());
            returnValue = json;



        }
        return returnValue;
    }

Очевидно, спасибо за любые советы или общие указания, на которые мне следует обратить внимание, но я просмотрел большинство примеров и учебных пособий, но, увы, они оказались безрезультатными. Это очень простой тест, при котором я выполняю GET с номером, служба считывает номер, присваивает его переменной ID класса, а затем я читаю его, сериализую и отправляю обратно.

1 Ответ

1 голос
/ 17 декабря 2011

Вам нужно установить BodyStyle, чтобы избавиться от этого ...

 [WebGet(UriTemplate = "xxx/xx/{gameID}/{format}"), BodyStyle = WebMessageBodyStyle.Bare ]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...