我有一个将 JSON 对象发布到 WCF 服务的 android 应用程序。发布的 JSON 对象包含一个数组属性。我的问题是在服务器上接收到数组属性时始终为空。
这是发布的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 属性为空。