Se esperaba BEGIN_ARRAY pero fue BEGIN_OBJECT con una matriz de tres elementos
Estoy desarrollando una aplicación Android 3.1 y superior.
Estoy usando Spring Framework 1.0.0.0RC1 para Android y Google GSon 2.1.
Recibo un error cuando intento analizar JSON.
Esto esJSON devuelto por"http://192.168.1.128/RestServiceImpl.svc/forms/".
{
"allFormsResult": [
{
"FormId": 1,
"FormName": "Formulario 1"
},
{
"FormId": 2,
"FormName": "Formulario 2"
},
{
"FormId": 3,
"FormName": "Formulario 3"
}
]
}
Aquí hago todo:
public class FormSpringController
{
public static List<Form> LoadAll()
{
HttpHeaders requestHeaders = new HttpHeaders();
requestHeaders.setAccept(Collections.singletonList(new MediaType("application","json")));
HttpEntity<?> requestEntity = new HttpEntity<Object>(requestHeaders);
String url = "http://192.168.1.128/RestServiceImpl.svc/forms/";
GsonHttpMessageConverter messageConverter = new GsonHttpMessageConverter();
List<HttpMessageConverter<?>> messageConverters = new ArrayList<HttpMessageConverter<?>>();
messageConverters.add(messageConverter);
RestTemplate restTemplate = new RestTemplate();
restTemplate.setMessageConverters(messageConverters);
ResponseEntity<Form[]> responseEntity = restTemplate.exchange(url, HttpMethod.GET, requestEntity, Form[].class);
Form[] result= responseEntity.getBody();
return Arrays.asList(result);
}
}
Cuando intento analizarlo, aparece el siguiente error:
W/System.err(519): Caused by: java.lang.IllegalStateException: Expected BEGIN_ARRAY but was BEGIN_OBJECT at line 1 column 2
¿Sabes cómo puedo arreglarlo?
ACTUALIZAR
@hotveryspicy me ha sugerido que hay un "problema" con JSON. Así es como estoy generando la respuesta JSON (código C #):
public class RestServiceImpl : IRestServiceImpl
{
public List<FormContract> allForms()
{
List<FormContract> list = null;
using (var vAdmEntities = new ADMDatabase.ADMEntities())
{
list = new List<FormContract>();
foreach (var form in vAdmEntities.Form)
{
FormContract formC = new FormContract
{
FormName = form.name.Trim(),
FormId = form.formId
};
list.Add(formC);
}
}
return list;
}
}