Android com.fasterxml.jackson.databind.exc.MismatchedInputException:意外的令牌(启动\对象),预期的启动\数组:

Android com.fasterxml.jackson.databind.exc.MismatchedInputException:意外的令牌(启动\对象),预期的启动\数组:,android,json,jackson,ioexception,Android,Json,Jackson,Ioexception,我正在尝试将SearchAvailableRidesRequestOffline保存到android共享首选项。我需要对对象进行反序列化以便以后使用它。当我试图从json反序列化它时,我遇到了这个异常 IOException com.fasterxml.jackson.databind.exc.MismatchedInputException: Unexpected token (START_OBJECT), expected START_ARRAY: need JSON Array to co

我正在尝试将
SearchAvailableRidesRequestOffline
保存到android
共享首选项
。我需要对对象进行
反序列化
以便以后使用它。当我试图从
json
反序列化它时,我遇到了这个异常

IOException

com.fasterxml.jackson.databind.exc.MismatchedInputException: Unexpected token (START_OBJECT), expected START_ARRAY: need JSON Array to contain As.WRAPPER_ARRAY type information for class com.mnox.webservices.core.ARequest
 at [Source: (String)"{
  "request" : {
     .....
        "filterType"[truncated 882 chars]; line: 2, column: 15] (through reference chain: com.mnox.paymentgateway.commons.support.offline.SearchAvailableRidesRequestOffline["request"])
JSON

{
  "request" : {
    //
    // SearchAvailableRidesRequest
    // Parameters
  },
  "concreateRequestClass" : "com.mnox.webservices.requests.v2.SearchAvailableRidesRequest",
  "currentActivity" : null,
  "maxLimitAllowed" : 1000,
  "priority" : 0,
  "requestType" : "mNoxSearch"
}
Java

public class SearchAvailableRidesRequestOffline extends AOfflineRequest implements IModelRequestedController {

    public SearchAvailableRidesRequestOffline() {
    }

    public SearchAvailableRidesRequestOffline(SearchAvailableRidesRequest searchRequest) {
        super(searchRequest);
    }

    @Override
    public int getMaxLimitAllowed() {
        return 1000;
    }

    @Override
    public int getPriority() {
        return 0;
    }

    @Override
    public void onModelRequestCompleted(IModelRequestedController context, int modelIdentifier,
                                        Object modelData) {

    }

    @Override
    public RequestType getRequestType() {
        return RequestType.mNoxSearch;
    }


    @Override
    public Activity getCurrentActivity() {
        return null;
    }

    @Override
    public Class getConcreateRequestClass() { return SearchAvailableRidesRequest.class;} ;

}
public abstract class AOfflineRequest {

    public static enum RequestType { mNoxSearch, mNoxDriverCurrentLocation} ;

    private ARequest request;
    public AOfflineRequest(ARequest request) {
        this.request = request;
    }
    public void updatePreExecuteProgressBar() {

    }

    public void updatePostExecuteProgressBar() {

    }

    public abstract RequestType getRequestType() ;
    public abstract Class getConcreateRequestClass() ;
    public abstract int getMaxLimitAllowed();
    public abstract int getPriority();

    //
    // For gson
    //
    public AOfflineRequest() {
    }
    public ARequest getRequest() {
        return request;
    }
}
记住:

  • 如果.json内容以{开头,则将其视为json对象

  • 如果.json内容以[开头,则将其视为json数组

你有这个错误

com.fasterxml.jackson.databind.exc.MismatchedInputException: 意外令牌(启动\u对象),预期启动\u数组:

因为您需要一个Json数组,但您的响应是一个Json对象:

"{
  "request" : {
   ...
   ...

检查您的回答。

只需编写代码,没有时间写任何文字?您正在做什么,什么时候出现此异常?抱歉,现在进行更正..似乎很疯狂:)尝试添加一个
private setRequest(ARequest)
方法,看看该帮助提示是否无效,然后尝试。您尝试序列化的源对象是什么?