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/".
<code>{ "allFormsResult": [ { "FormId": 1, "FormName": "Formulario 1" }, { "FormId": 2, "FormName": "Formulario 2" }, { "FormId": 3, "FormName": "Formulario 3" } ] } </code>
Aquí hago todo:
<code>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); } } </code>
Cuando intento analizarlo, aparece el siguiente error:
<code>W/System.err(519): Caused by: java.lang.IllegalStateException: Expected BEGIN_ARRAY but was BEGIN_OBJECT at line 1 column 2 </code>
¿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 #):
<code>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; } } </code>