Я недавно пытался вывести 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 класса, а затем я читаю его, сериализую и отправляю обратно.