2012-12-06 35 views
0

我有一個將JSON對象發佈到WCF服務的Android應用程序。所發佈的JSON對象包含一個數組屬性。我的問題是,在服務器上收到時,arrray屬性始終爲空。將JSON對象發佈到WCF服務 - 列表屬性始終爲空

這是發佈了Android代碼:

ObjectMapper mapper = new ObjectMapper(); 
ArrayList<RespuestaEncuesta> respuestas = new ArrayList<RespuestaEncuesta>(1); 
RespuestaEncuesta r = new RespuestaEncuesta(); 
r.Comentarios = "ASD"; 
r.GrupoClienteID = UUID.fromString("00000000-0000-0000-0000-000000000000"); 
r.GrupoID = 1155; 
r.Opcion = "2"; 
respuestas.add(r); 

RespuestaWrapper data = new RespuestaWrapper(); 
data.Respuestas = respuestas; 

mapper.configure(SerializationFeature.WRAP_ROOT_VALUE, true); 
String respuestarJson = mapper.writeValueAsString(data); 
String url = config[0] + "/GuardaEncuestas"; 

HttpPost httpPost = new HttpPost(url); 
httpPost.setHeader("Accept", "application/json"); 
httpPost.setHeader("Content-type", "application/json"); 

StringEntity tmp = new StringEntity(respuestarJson); 
httpPost.setEntity(tmp); 

DefaultHttpClient httpClient = new DefaultHttpClient(); 
httpClient.execute(httpPost); 

產生以下JSON:

{ 
    "RespuestaWrapper" : { 
    "Respuestas" : [ { 
     "Comentarios" : "ASD", 
     "GrupoClienteID" : "00000000-0000-0000-0000-000000000000", 
     "Opcion" : "2", 
     "Numero" : 0, 
     "GrupoID" : 1155.0 
    } ] 
    } 
} 

在服務器端,我的服務定義如下:

[OperationContract] 
    [WebInvoke(
      Method = "POST", 
      UriTemplate = "GuardaEncuestas", 
      BodyStyle = WebMessageBodyStyle.Bare, 
      ResponseFormat = WebMessageFormat.Json, 
      RequestFormat = WebMessageFormat.Json)] 
    void GuardaEncuestas(RespuestaWrapper respuestas); 

[Serializable, DataContract] 
    public class RespuestaWrapper 
    { 
    [DataMember] 
    public List<RespuestasWrapped> Respuestas; 
    } 

    [Serializable, DataContract] 
    public class RespuestasWrapped 
    { 
    [DataMember(IsRequired = false)] 
    public double GrupoID { get; set; } 
    [DataMember(IsRequired = false)] 
    public Guid GrupoClienteID { get; set; } 
    [DataMember(IsRequired = false)] 
    public int Numero { get; set; } 
    [DataMember(IsRequired = false)] 
    public string Opcion { get; set; } 
    [DataMember(IsRequired = false)] 
    public string Comentarios { get; set; } 
    } 

每次我打電話給服務時,我都會收到RespuestasWrapped對象,但Respuestas propery是空的。

回答

2

您的消息體式爲裸露BodyStyle = WebMessageBodyStyle.Bare)。如果在製作JSON作爲

{ 
    "Respuestas" : [ { 
    "Comentarios" : "ASD", 
    "GrupoClienteID" : "00000000-0000-0000-0000-000000000000", 
    "Opcion" : "2", 
    "Numero" : 0, 
    "GrupoID" : 1155.0 
    } ] 
} 

它將工作

相關問題