Java 阅读JSON-改型-Android Studio

Java 阅读JSON-改型-Android Studio,java,android,retrofit,Java,Android,Retrofit,我真的很想帮忙。我不能阅读JSON,我不知道我做错了什么 我会把代码放在这里 我有这个Json { "id": "288", "name": "Tarjeta Shopping", "secure_thumbnail": "https://www.mercadopago.com/org-img/MP3/API/logos/288.gif", "thumbnail": "http://img.mlstatic.com/org-img/MP3/API/logos/2

我真的很想帮忙。我不能阅读JSON,我不知道我做错了什么

我会把代码放在这里

我有这个Json

 {
    "id": "288",
    "name": "Tarjeta Shopping",
    "secure_thumbnail": "https://www.mercadopago.com/org-img/MP3/API/logos/288.gif",
    "thumbnail": "http://img.mlstatic.com/org-img/MP3/API/logos/288.gif",
    "processing_mode": "aggregator",
    "merchant_account_id": null
  }
这是我的类,它应该表示JSON

public class Tarjeta {

@SerializedName("id")
@Expose
private String id;
@SerializedName("name")
@Expose
private String name;
@SerializedName("secure_thumbnail")
@Expose
private String secureThumbnail;
@SerializedName("thumbnail")
@Expose
private String thumbnail;
@SerializedName("processing_mode")
@Expose
private String processingMode;
@SerializedName("merchant_account_id")
@Expose
private Object merchantAccountId;

public Tarjeta() {
}

public String getId() {
    return id;
}

public void setId(String id) {
    this.id = id;
}

public String getName() {
    return name;
}

public void setName(String name) {
    this.name = name;
}

public String getSecureThumbnail() {
    return secureThumbnail;
}

public void setSecureThumbnail(String secureThumbnail) {
    this.secureThumbnail = secureThumbnail;
}

public String getThumbnail() {
    return thumbnail;
}

public void setThumbnail(String thumbnail) {
    this.thumbnail = thumbnail;
}

public String getProcessingMode() {
    return processingMode;
}

public void setProcessingMode(String processingMode) {
    this.processingMode = processingMode;
}

public Object getMerchantAccountId() {
    return merchantAccountId;
}

public void setMerchantAccountId(Object merchantAccountId) {
    this.merchantAccountId = merchantAccountId;
}

@Override
public String toString() {
    return "Tarjeta{" +
            "id='" + id + '\'' +
            ", name='" + name + '\'' +
            ", secureThumbnail='" + secureThumbnail + '\'' +
            ", thumbnail='" + thumbnail + '\'' +
            ", processingMode='" + processingMode + '\'' +
            ", merchantAccountId=" + merchantAccountId +
            '}';
}
}

这是我的获取方法

@GET("payment_methods/card_issuers")
Call<Tarjeta> getTarjetas2(@Query("public_key") String apiKey,
                           @Query("payment_method_id") String payment_method_id);
@GET(“付款方式/发卡机构”)
调用getTarjetas2(@Query(“public_key”)字符串apiKey,
@查询(“付款方法id”)字符串付款方法id);
这就是我试图阅读它的地方

botonTest2.setOnClickListener(new View.OnClickListener() {
  @Override
  public void onClick(View v) {
      System.out.println("Test boton 2 clickeado");
      Retrofit retrofit = new Retrofit.Builder()
              .baseUrl(BASE_URL)
              .addConverterFactory(GsonConverterFactory.create())
              .build();

      ServicePago servicePago = retrofit.create(ServicePago.class);
      Call<Tarjeta> contenedorTarjetaCall = servicePago.getTarjetas2(apiKey,"visa");

      contenedorTarjetaCall.enqueue(new Callback<Tarjeta>() {
          @Override
          public void onResponse(Call<Tarjeta> call, Response<Tarjeta> response) {
              Toast.makeText(MainActivity.this, "BIEN", Toast.LENGTH_SHORT).show();

          }

          @Override
          public void onFailure(Call<Tarjeta> call, Throwable t) {
              Toast.makeText(MainActivity.this, "ALGO SALIO MAL", Toast.LENGTH_SHORT).show();
          }
      });
  }
botonTest2.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
System.out.println(“测试boton 2 clickeado”);
改装改装=新改装.Builder()
.baseUrl(基本URL)
.addConverterFactory(GsonConverterFactory.create())
.build();
ServicePago ServicePago=改装.create(ServicePago.class);
调用contenedorTarjetaCall=servicePago.getTarjetas2(apiKey,“visa”);
enqueue(新的回调(){
@凌驾
公共void onResponse(调用、响应){
Toast.makeText(MainActivity.this,“BIEN”,Toast.LENGTH_SHORT.show();
}
@凌驾
失败时公共无效(调用调用,可丢弃的t){
Toast.makeText(MainActivity.this,“ALGO SALIO MAL”,Toast.LENGTH_SHORT.show();
}
});
}
}))

我正在处理此错误:java.lang.IllegalStateException:应为BEGIN_对象,但在第1行第2列路径处为BEGIN_数组$


我认为我的类是正确建模的,我完全迷路了。

既然你没有发布你的整个JSON,我将用一个粗略的想法来回答,希望能有所帮助

该错误表示接收到的JSON不是Tarjeta,而是Tarjeta数组。所以要解决这个问题,我想你只需要把你的回答包装成一个列表类型。所以是这样的:

@GET("payment_methods/card_issuers")
Call<List<Tarjeta>> getTarjetas2(@Query("public_key") String apiKey,
                           @Query("payment_method_id") String payment_method_id);
@GET(“付款方式/发卡机构”)
调用getTarjetas2(@Query(“public_key”)字符串apiKey,
@查询(“付款方法id”)字符串付款方法id);

是否显示整个JSON字符串?您的代码似乎需要一个JSON对象,但却得到了一个JSON数组。它是一个数组。下面的人答对了。谢谢大家!谢谢。真的,不客气。如果我的回答是正确的,请接受它。非常感谢。