2015-04-04 146 views
0

我如何解析这个使用改造?我得到的错误BEGIN_OBJECT但BEGIN_ARRAY改进错误预计BEGIN_OBJECT但是BEGIN_ARRAY

现在,我解析它这样..

下面是适配器类

public static RetroInterface getCommonPathInterface() { 
     RestAdapter restAdapter = new RestAdapter.Builder() 
       .setEndpoint("myurl") 
       .build(); 
     records= restAdapter.create(RetroInterface.class); 
     return records; 
    } 

下面是接口,RetroInterface.class

@GET("/mypath") 
     void getValue(

       Callback<MyBean> callback  
     ); 

这是我如何调用它的主要活动

getCommonPathInterface().getValue(new Callback<MyBean>() { 
@Override 
        public void success(MyBean myBean, Response response) { 
         inti = 0; 

        } 

        @Override 
        public void failure(RetrofitError error) { 
         int i = 0; 
        } 

       }); 

下面是JSON响应

[ 
    { 
    id: "111", 
    name: "Val1" 
    }, 
    { 
    id: "222", 
    name: "Val2" 
    } 
    ] 
+0

你现在怎么解析它? – Egor 2015-04-04 08:38:03

+1

请分享您当前的json解析代码块。否则没有人可以帮助你。从错误消息来看,它非常清楚它需要一个JSON对象作为根对象,但是它获得了一个JSON数组作为根对象。 – 2015-04-04 08:41:46

+0

看看:)。我编辑了代码 – Abhilash 2015-04-04 08:52:53

回答

0

我是新来改造的,但我是有这个问题,当我处理一个多类POJO和使用专为单级POJO代码。让我知道如果是这样的话。另外,请粘贴一些代码! :)

+0

我认为,它不是一个很好的答案,但肯定会是一个非常好的评论。 – 2015-04-04 08:43:18

1

右键嗨,现在你正在解析响应,如果它是格式如下:

{ 
    "contacts":[ 
     { 
     "id":"111", 
     "name":"Val1" 
     }, 
     { 
     "id":"222", 
     "name":"Val2" 
     } 
    ] 
} 

例外告诉你这一点,你是在根期待的对象,但真实的数据实际上是数组。这意味着您需要将类型更改为JSON对象。

谢谢。

+0

你的意思是说,我需要改变服务器端代码,而不是一个JSON数组,它应该用一个JSON对象启动响应,对吧? 我可以在客户端做些什么吗? – Abhilash 2015-04-04 09:09:32

+0

是的,你可以解析任何发送给你的服务器,如果它是有效的json格式。 – Kunu 2015-04-04 09:11:14

+0

是的,假设你需要改变服务器端,所以它会返回json对象而不是JSON数组的响应。 – 2015-04-04 09:11:33

2

Yippi!得到它的工作。很简单的解决方案我的回调方法发生了一些小改变。

而不是Callback<MyBean> callback使用Callback<MyBean[]> callback。问题解决了 ! :)

+0

哇,这很简单,并不需要更换服务器。大!坦克Abhilash! – 2015-06-20 14:08:04

相关问题