Ожидаемый BEGIN_ARRAY, но был BEGIN_OBJECT с массивом из трех элементов
Я разрабатываю приложение для Android 3.1 и выше.
Я использую Spring Framework 1.0.0.0RC1 для Android и Google GSon 2.1.
Я получаю сообщение об ошибке, когда пытаюсь выполнить синтаксический анализ JSON.
ЭтоJSON вернулся"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>
Здесь я делаю все:
<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>
Когда я пытаюсь разобрать его, я получаю следующую ошибку:
<code>W/System.err(519): Caused by: java.lang.IllegalStateException: Expected BEGIN_ARRAY but was BEGIN_OBJECT at line 1 column 2 </code>
Вы знаете, как я могу это исправить?
UPDATE
@hotveryspicy предположил, что у меня есть «проблема» с JSON. Вот как я генерирую ответ JSON (код 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>