首页 文章

Json使用restTemplate在android中解析(BEGIN_ARRAY但是BEGIN_OBJECT)

提问于
浏览
0

我使用android rest模板解析我的android项目中的json服务 . 当我尝试解析json我有一些错误 .

error:

**org.springframework.http.converter.HttpMessageNotReadableExeption:
Could not read JSON:java.lang.IllegalStateExeption:
Exepted BEGIN_ARRAY but was BEGIN_OBJECT at line 1 column 2;
nested exception in com.google.gson.JsonSyntaxException:java**

.......等等

Here is my json:

{
    "kategorijaartikla": [
        {
            "id": "1",
            "kategorija": "kategorija1"
        },
        {
            "id": "2",
            "kategorija": "kategorija2"
        }
    ]
}

Here is my RestTemplate code:

String url = "http://tomcat.fit.ba/asdf/rest/GetAllKategorije";
    HttpHeaders requestHeaders = new HttpHeaders();
    requestHeaders.setAccept(Collections.singletonList(new MediaType("application","json")));

    HttpEntity<?> requestEntity = new HttpEntity<Object>(requestHeaders);       
    GsonHttpMessageConverter messageConverter = new GsonHttpMessageConverter();
    List<HttpMessageConverter<?>> messageConverters = new ArrayList<HttpMessageConverter<?>>();

    messageConverters.add(messageConverter);
    RestTemplate restTemplate = new RestTemplate();

    restTemplate.getMessageConverters().add(messageConverter);
    restTemplate.getMessageConverters().add(new org.springframework.http.converter.json.GsonHttpMessageConverter());

    ResponseEntity<kategorijaartikla[]> responseEntity = restTemplate.exchange(url, HttpMethod.GET, requestEntity, kategorijaartikla[].class);
    kategorijaartikla[] events = responseEntity.getBody();

kategorijaartikla.java

public class kategorijaartikla {private Integer id; private String kategorija; public kategorijaartikla(){} public Integer getId(){return id; public void setId(Integer newId){this.id = newId; public String getKategorija(){return kategorija; public void setKategorija(String newKategorija)

Logcat:

12-07 02:55:21.123: E/Trace(1043): error opening trace file: No such file or directory (2)
12-07 02:55:22.693: D/libEGL(1043): loaded /system/lib/egl/libEGL_emulation.so
12-07 02:55:22.702: D/(1043): HostConnection::get() New Host Connection established 0x2a0d9c80, tid 1043
12-07 02:55:22.723: D/libEGL(1043): loaded /system/lib/egl/libGLESv1_CM_emulation.so
12-07 02:55:22.754: D/libEGL(1043): loaded /system/lib/egl/libGLESv2_emulation.so
12-07 02:55:22.903: W/EGL_emulation(1043): eglSurfaceAttrib not implemented
12-07 02:55:22.963: D/OpenGLRenderer(1043): Enabling debug mode 0
12-07 02:55:23.363: D/dalvikvm(1043): GC_CONCURRENT freed 231K, 6% free 6196K/6535K, paused 76ms+41ms, total 284ms
12-07 02:57:16.873: W/EGL_emulation(1043): eglSurfaceAttrib not implemented 12-07 02:57:20.872: D/dalvikvm(1043): null clazz in OP_INSTANCE_OF, single-stepping

1 回答

  • 1

    试试这个,所以你的结果是一个数组,而不是一个json对象 .

    [
        {
            "id": "1",
            "kategorija": "kategorija1"
        },
        {
            "id": "2",
            "kategorija": "kategorija2"
        }
    ]
    

    这样你就会收到一个json对象数组,而不是一个带数组的json对象 .

相关问题