Java 使用改型从最内层类获取数据。帮助我显示类别A和B的数据 下面是我试图从中获取数据的JSON。我需要

Java 使用改型从最内层类获取数据。帮助我显示类别A和B的数据 下面是我试图从中获取数据的JSON。我需要,java,android,json,retrofit2,Java,Android,Json,Retrofit2,使用Refught2提取并显示名称和类。 3.我尝试了几个站点,但只能直接从数组中获取数据 4.但不是来自对象数组。这将由该代码构成 { "Class1" :{ "A": [ { "name" : "paul", "class" : "first" } ],

使用Refught2提取并显示名称和类。 3.我尝试了几个站点,但只能直接从数组中获取数据 4.但不是来自对象数组。这将由该代码构成

     {
         "Class1" :{
                 "A": [
             { 
              "name" : "paul",
              "class" : "first"
             }
                     ],
                "B": [
             {  
               "name" : "anna",
               "class" : "second"
             }
                    ]
             },

    "Class2" :{
              "A": [
                     { 
                     "name" : "matthew",
                    "class" : "first"
                      }
                   ],
              "B": [
                     {  
                     "name" : "joe",
                     "class" : "second"
                     }
                   ]
                }
    } 
你能告诉我为什么要使用onFailure()方法吗。我的代码怎么了

     public class MainActivity extends AppCompatActivity {

private ListView listView;
private static final String Tag = "com.example";

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    listView = (ListView)findViewById(R.id.bList);

    OkHttpClient.Builder httpClient = new OkHttpClient.Builder();

    String API_BASE_URL = "xyz.com";

    HttpLoggingInterceptor logging = new HttpLoggingInterceptor();

    logging.setLevel(HttpLoggingInterceptor.Level.BODY);

    httpClient.addInterceptor(logging); 
    Retrofit retrofit = new Retrofit.Builder()
            .baseUrl(API_BASE_URL)
            .addConverterFactory(GsonConverterFactory.create())
            .client(httpClient.build())
            .build();



    ApiInterface client =  retrofit.create(ApiInterface.class);

    Call<List<Example>> call = client.getdate();


    call.enqueue(new Callback<List<Example>>() {
        @Override
        public void onFailure(Call<List<Example>> call, Throwable t) {

            Toast.makeText(MainActivity.this, "ERROR", Toast.LENGTH_LONG).show();
        }

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

            if (response.isSuccessful()) {
                //Response success. Handle data here
            }
            else{
                //For getting error message
                Log.d("Error message",response.message());
                //For getting error code. Code is integer value like 200,404 etc
                Log.d("Error code",String.valueOf(response.code()));
            }

        }
    });
}
public类MainActivity扩展了AppCompatActivity{
私有列表视图列表视图;
私有静态最终字符串Tag=“com.example”;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
listView=(listView)findViewById(R.id.bList);
OkHttpClient.Builder httpClient=新建OkHttpClient.Builder();
字符串API_BASE_URL=“xyz.com”;
HttpLoggingInterceptor logging=新的HttpLoggingInterceptor();
logging.setLevel(HttpLoggingInterceptor.Level.BODY);
httpClient.addInterceptor(日志记录);
改装改装=新改装.Builder()
.baseUrl(API_BASE_URL)
.addConverterFactory(GsonConverterFactory.create())
.client(httpClient.build())
.build();
ApiInterface client=reformation.create(ApiInterface.class);
Call Call=client.getdate();
call.enqueue(新回调(){
@凌驾
失败时公共无效(调用调用,可丢弃的t){
Toast.makeText(MainActivity.this,“ERROR”,Toast.LENGTH_LONG.show();
}
@凌驾
公共void onResponse(调用、响应){
if(response.issusccessful()){
//响应成功。在此处处理数据
}
否则{
//用于获取错误消息
Log.d(“错误消息”,response.message());
//用于获取错误代码。代码是整数值,如200404等
Log.d(“错误代码”,String.valueOf(response.code());
}
}
});
}
}

例子是我的主课

下面是MyAPIInterface.java

public interface ApiInterface {public interface ApiInterface {
          @GET("/sement")
          Call<List<Example>> getdate(@Query("date")String date);

              }
public接口apinterface{public接口apinterface{
@获得(“/精液”)
调用getdate(@Query(“date”)字符串date);
}

您的JSON无效。但是,对于您的问题,答案是 您必须使用fromJSON创建模型,然后使用GSON库将JSON数据映射到模型

参考此链接,您将了解您的想法

对于上面的示例,您将获得如下名称和类

List<A> alist = mainclass.getClass1().getA();
for (int i = 0; i < alist.size(); i++) {
       String name = alist.get(i).getName();
       String class = alist.get(i).getClass();
}
List alist=mainclass.getClass1().getA();
对于(int i=0;i

对B类做同样的处理,你的JSON是无效的。但是,对于你的问题,答案是 您必须使用fromJSON创建模型,然后使用GSON库将JSON数据映射到模型

参考此链接,您将了解您的想法

对于上面的示例,您将获得如下名称和类

List<A> alist = mainclass.getClass1().getA();
for (int i = 0; i < alist.size(); i++) {
       String name = alist.get(i).getName();
       String class = alist.get(i).getClass();
}
List alist=mainclass.getClass1().getA();
对于(int i=0;i

并对类B执行相同的操作,首先验证Json

使用此工具对Json对象进行分类

创建对象之后

这里getData()是第一个json对象

List<A> listA= response.body().getData().getClass1().getA();
List<B> listB=response.body().getData().getClass1().getB();

for(A list:listA)
list.getname();        //paul
list.getclass();       //first

for(B list:listB) 
list.getname();       // anna
list.getclass();      //second



List<A> listA= response.body().getData().getClass2().getA();
List<B> listB=response.body().getData().getClass2).getB();

for(A list:listA)
list.getname();           //matthew
list.getclass();          //first

for(B list:listB)
list.getname();           //joe
list.getclass();          //second
List listA=response.body().getData().getClass1().getA();
List listB=response.body().getData().getClass1().getB();
对于(列表:listA)
list.getname();//paul
list.getclass();//首先
对于(B列表:listB)
list.getname();//anna
list.getclass();//秒
List listA=response.body().getData().getClass2().getA();
List listB=response.body().getData().getClass2.getB();
对于(列表:listA)
list.getname();//matthew
list.getclass();//首先
对于(B列表:listB)
list.getname();//joe
list.getclass();//秒

首先验证Json

使用此工具对Json对象进行分类

创建对象之后

这里getData()是第一个json对象

List<A> listA= response.body().getData().getClass1().getA();
List<B> listB=response.body().getData().getClass1().getB();

for(A list:listA)
list.getname();        //paul
list.getclass();       //first

for(B list:listB) 
list.getname();       // anna
list.getclass();      //second



List<A> listA= response.body().getData().getClass2().getA();
List<B> listB=response.body().getData().getClass2).getB();

for(A list:listA)
list.getname();           //matthew
list.getclass();          //first

for(B list:listB)
list.getname();           //joe
list.getclass();          //second
List listA=response.body().getData().getClass1().getA();
List listB=response.body().getData().getClass1().getB();
对于(列表:listA)
list.getname();//paul
list.getclass();//首先
对于(B列表:listB)
list.getname();//anna
list.getclass();//秒
List listA=response.body().getData().getClass2().getA();
List listB=response.body().getData().getClass2.getB();
对于(列表:listA)
list.getname();//matthew
list.getclass();//首先
对于(B列表:listB)
list.getname();//joe
list.getclass();//秒

您的json格式无效这是正确的格式:{“Class1”:{“A”:[{“name”:“paul”,“class”:“first”}],“B”:[{“name”:“anna”,“class”:“second”}],“Class2”:{“A”:[{“name”:“matthew”,“class”:“first”}],“B”:[{“name”:“joe”,“class”:“second”}]}}欢迎来到Stack Overflow Preeti。关于您的问题,首先检查您的JSON响应是否无效。此外,您应该根据您的JSON响应实现模型类。您的JSON格式无效这是正确的格式:{“Class1”:{“A”:[{“姓名”:“保罗”,“班级”:“第一”}],“B”:[{“姓名”:“安娜”,“班级”:“第二”}],“班级2”:{“A”:[{“姓名”:“马修”,“班级”:“第一”}],“B”:[{“姓名”:“乔”,“班级”:“第二”}]欢迎来到Stack Overflow Preeti。关于您的问题,请首先检查您的JSON响应是否无效。此外,您应该