3

を返すRESTエンドポイントがありますList<VariablePresentation>。私はこの残りのエンドポイントを次のようにテストしようとしています

    @Test
    public void testGetAllVariablesWithoutQueryParamPass() throws Exception {
        final ClientRequest clientCreateRequest = new ClientRequest("http://localhost:9090/variables");
        final MultivaluedMap<String, String> formParameters = clientCreateRequest.getFormParameters();
        final String name = "testGetAllVariablesWithoutQueryParamPass";
        formParameters.putSingle("name", name);
        formParameters.putSingle("type", "String");
        formParameters.putSingle("units", "units");
        formParameters.putSingle("description", "description");
        formParameters.putSingle("core", "true");

        final GenericType<List<VariablePresentation>> typeToken = new GenericType<List<VariablePresentation>>() {
        };
        final ClientResponse<List<VariablePresentation>> clientCreateResponse = clientCreateRequest.post(typeToken);
        assertEquals(201, clientCreateResponse.getStatus());
        final List<VariablePresentation> variables = clientCreateResponse.getEntity();
        assertNotNull(variables);
        assertEquals(1, variables.size());

    }

このテストはエラーで失敗します

org.codehaus.jackson.map.JsonMappingException: Can not deserialize instance of java.util.ArrayList out of START_OBJECT token(..)

この問題を解決するにはどうすればよいですか?

4

1 に答える 1

6

これはJacksonエラーのように見えます。この場合、配列('[')で始まる配列を解析することを期待していますが、オブジェクト('{')の開始トークンが検出されています。コードを見ると、JSONをリストに逆シリアル化しようとしていると思いますが、オブジェクトのJSONを取得しています。

RESTエンドポイントが返すJSONはどのように見えますか?このように見えるはずです

[
    {
        // JSON for VariablePresentation value 0
        "field0": <some-value>
        <etc...>
    },
    <etc...>
]
于 2013-02-17T10:28:56.507 に答える