2016-11-28 11 views
0

JSONの解析を手伝ってください。改訂の間違ったIllegalStateException JSONの解析

はIllegalStateException:私は常にオブジェクトを取得期待BEGIN_ARRAYをしかし 行1列2パス$

私はPARS List<List<String>><List<String>><String>にしようとしますが、同じexeptionを得るにBEGIN_OBJECTました。ここで

は私のJSONです:

{"barcodes":[["1212"],["22222222222"],["22222321321"],["23565233665558488"],["2999300031242"],["6"]]} 

はインタフェース:

import java.util.List; 
import retrofit2.Call; 
import retrofit2.http.GET; 

public interface RequestInterface { 
    @GET("barcodeinfo?getBarcodes") 
    Call<List<List<String>>> getBarcodeList(); 
} 

OBJ:

public class SingleBarcode { 
    final String barcodes; 

    public SingleBarcode(String barcodes) { 
     this.barcodes = barcodes; 
    } 
} 

メイン:

void getRetrofitArray() { 
    Retrofit retrofit = new Retrofit.Builder() 
      .baseUrl(BASE_URL) 
      .addConverterFactory(GsonConverterFactory.create()) 
      .build(); 

    RequestInterface service = retrofit.create(RequestInterface.class); 

    Call<List<List<String>>> call = service.getBarcodeList(); 

    call.enqueue(new Callback<List<List<String>>>() { 

     @Override 
     public void onResponse(Call<List<List<String>>> call, Response<List<List<String>>> response) { 
      try { 
       List<List<String>> BarcodeData = response.body(); 
       Log.d("MyLog", BarcodeData.size()+""); 
      } catch (Exception e) { 
       Log.d("MyLog", "There is an error"); 
       e.printStackTrace(); 
      } 
     } 

     @Override 
     public void onFailure(Call<List<List<String>>> call, Throwable t) { 
      Log.d("MyLog", "error " + t.toString()); 
     } 
    }); 
} 
+1

あなたが – Selvin

+0

をなぜ期待いただきましたので、あなたのJSONが...配列ではないでしょうか? [1,2,3,4]は配列ではありませんか? JSON配列は[{1}、{2}、{3}]のようになりますか?だからオブジェクトの文字列= [1,2,3,4]ですか? –

+0

{...}は配列ではありません – Selvin

答えて

2

これらのPOJOクラスを使用

public class Result { 

@SerializedName("barcodes") 
@Expose 
private List<List<String>> barcodes = new ArrayList<List<String>>(); 

/** 
* 
* @return 
* The barcodes 
*/ 
public List<List<String>> getBarcodes() { 
return barcodes; 
} 

/** 
* 
* @param barcodes 
* The barcodes 
*/ 
public void setBarcodes(List<List<String>> barcodes) { 
this.barcodes = barcodes; 
} 

} 

このような使用のインターフェイス...

@GET("barcodeinfo?getBarcodes") 
    Call<Result> getBarcodeList(); 

Call<Result> call = service.getBarcodeList(); 

    call.enqueue(new Callback<Result>() { 

     @Override 
     public void onResponse(Call<Result> call, Response<Result> response) { 

     Result r = response.body(); // you can initialize result r variable global if you have out side use of this response 

     } 

     @Override 
     public void onFailure(Call<Result> call, Throwable t) { 
      Log.d("MyLog", "error " + t.toString()); 
     } 
    }); 
....このような呼び出し

注: - あなたがリストとしてアクセスしようとしているが、応答して、それは簡単なJSONオブジェクトを来

+0

ありがとう、本当に助けてくれました。 –

+0

あなたはようこそ..... – sushildlh

関連する問題