2012-04-09 16 views
0

私はAndroid 3.1以上のアプリケーションを開発しています。BEGIN_ARRAYが必要ですが、3つの要素の配列を持つBEGIN_OBJECTでした

私はAndroid用のSpring Framework 1.0.0.0RC1とGoogle GSon 2.1を使用しています。

JSONの解析中にエラーが発生します。

これはJSON "http://192.168.1.128/RestServiceImpl.svc/forms/"によって返さです。ここで

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

私はすべてでください:私はそれを解析しようとすると、私は次のエラーを

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

を得る:

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

あなたは、私はそれを修正する方法を知っていますか?

UPDATE
@hotveryspicyはJSONとの "問題" がある私を示唆しています。これは、どのように私は(C#コード)JSONレスポンスを生成しています:

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

答えて

1

あなたの文字列は、オブジェクト(JSONの概念)であることを意味し、「{」で始まり、あなたが配列としてそれを考慮しているようですとこれは間違っています。

EDITED:

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

がちょうどオブジェクト "データ" を追加し、次にあなたがパースを続行。 Jsonが最初の要素を配列 "["として取得したときの問題です。

+0

ありがとうございました。どうすれば修正できますか?私はそのWebサービス(C#とWCFで作られた)を変更することができますが、私はどのようにわかりません。 – VansFannel

+0

コードの解析方法 –

+0

C#コードですか?どのようなコードが必要ですか? – VansFannel

関連する問題