2012-04-09 4 views
0

Ich entwickle eine Android 3.1 und höher Anwendung.Erwartete BEGIN_ARRAY aber war BEGIN_OBJECT mit einem Array von drei Elementen

Ich benutze Spring Framework 1.0.0.0RC1 für Android und Google GSon 2.1.

Ich erhalte einen Fehler, wenn ich versuche, JSON zu analysieren.

Dies ist JSON zurück von "http://192.168.1.128/RestServiceImpl.svc/forms/".

{ 
    "allFormsResult": [ 
     { 
      "FormId": 1, 
      "FormName": "Formulario 1" 
     }, 
     { 
      "FormId": 2, 
      "FormName": "Formulario 2" 
     }, 
     { 
      "FormId": 3, 
      "FormName": "Formulario 3" 
     } 
    ] 
} 

Hier habe ich alles tun:

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); 
    } 
} 

Wenn ich versuche, es zu analysieren, bekomme ich folgende Fehlermeldung:

W/System.err(519): Caused by: java.lang.IllegalStateException: Expected BEGIN_ARRAY but was BEGIN_OBJECT at line 1 column 2 

Wissen Sie, wie kann ich es beheben?

UPDATE
@hotveryspicy hat mir vorgeschlagen, ein "Problem" mit JSON ist. Dies ist, wie ich zu erzeugen JSON-Antwort (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; 
    } 
} 

Antwort

1

als Zeichenfolge beginnt mit „{“, was bedeutet es ein Objekt (json-Konzept) ist, und es scheint, dass Ihr es als ein Array unter Berücksichtigung , was falsch ist.

EDITED:

{"data": 
    { 
    "allFormsResult": [ 
     { 
      "FormId": 1, 
      "FormName": "Formulario 1" 
     }, 
     { 
      "FormId": 2, 
      "FormName": "Formulario 2" 
     }, 
     { 
      "FormId": 3, 
      "FormName": "Formulario 3" 
     } 
    ] 
    } 
} 

nur ein Objekt "Daten" anzuhängen, und dann weiter mit Ihnen das Parsen. Es ist ein Problem von Json, als es das erste Element als Array "[" bekam.

+0

Danke. Wie kann ich das beheben? Ich kann diesen Webservice ändern (gemacht mit C# und WCF), aber ich weiß nicht wie. – VansFannel

+0

Code anzeigen, wie Sie analysieren. –

+0

Meinst du C# -Code? Welchen Code müssen Sie sehen? – VansFannel

Verwandte Themen