0

Android 3.1 以降のアプリケーションを開発しています。

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

JSON を解析しようとすると、エラーが発生します。

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

{
    "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 に「問題」があることを示唆しています。これは、JSON 応答 (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;
    }
}
4

1 に答える 1

1

文字列が「」で始まる{ため、これはObject(jsonの概念)であることを意味し、配列と見なしているように見えますが、これは誤りです。

編集:

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

オブジェクト「データ」を追加して、解析を続行します。最初の要素を配列""として取得したときのJsonの問題です[

于 2012-04-09T12:42:02.107 に答える