我有一个将JSON对象发布到WCF服务的Android应用程序。发布的JSON对象包含数组属性。我的问题是,在服务器上收到arrray属性时始终为null。
这是用于发布的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属性为空。
答案 0 :(得分:2)
您的邮件正文样式裸(BodyStyle = WebMessageBodyStyle.Bare
)。如果你生成你的json
{
"Respuestas" : [ {
"Comentarios" : "ASD",
"GrupoClienteID" : "00000000-0000-0000-0000-000000000000",
"Opcion" : "2",
"Numero" : 0,
"GrupoID" : 1155.0
} ]
}
它会起作用