使用retforit从嵌套的json扩展API中提取数据
我有一个嵌套的JSON扩展。我正在尝试通过改造获得数据,但没有成功。我将API放在下面。我认为这个API正在输出php(如果ıknow false,您可以警告我)。如果我的URL只包含json扩展,我可以获取数据,但我不知道如何使用这个URL。 我哪里出错了?你能提供一些信息吗 //地区API:使用retforit从嵌套的json扩展API中提取数据,json,api,get,retrofit,Json,Api,Get,Retrofit,我有一个嵌套的JSON扩展。我正在尝试通过改造获得数据,但没有成功。我将API放在下面。我认为这个API正在输出php(如果ıknow false,您可以警告我)。如果我的URL只包含json扩展,我可以获取数据,但我不知道如何使用这个URL。 我哪里出错了?你能提供一些信息吗 //地区API: 公共类区域模型{ @序列化名称(“strArea”) 公共字符串strArea; } 公共接口区{ @获取(“list.php?a”) 调用getData(); } 公共类MainActivity扩展了
公共类区域模型{
@序列化名称(“strArea”)
公共字符串strArea;
}
公共接口区{
@获取(“list.php?a”)
调用getData();
}
公共类MainActivity扩展了AppCompatActivity{
文本视图区域标题;
ArrayList区域模型;
专用字符串base_URL=”https://www.themealdb.com/api/json/v1/1/";
改造;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
regionTitle=findViewById(R.id.regionTitle);
//贝尔盖皮:https://www.themealdb.com/api/json/v1/1/list.php?a=list
//***改进Ve-JSON***
Gson Gson=new GsonBuilder().setLenient().create();//Gson objesi9
改装=新改装.Builder()
.baseUrl(基本URL)
.addConverterFactory(GsonConverterFactory.create(gson))
.build();
loadData();
}
私有void loadData()
{
RegionAPI RegionAPI=reformation.create(RegionAPI.class);
Call Call=regionAPI.getData();
call.enqueue(新回调(){
@凌驾
公共void onResponse(调用、响应){
if(response.issusccessful())
{
List responseList=response.body();
regionModels=新的ArrayList(responseList);
对于(RegionModel RegionModel:regionModels)
{
System.out.println(regionModel.strArea);
}
}
}
@凌驾
失败时公共无效(调用调用,可丢弃的t){
t、 printStackTrace();
}
});
}
}
“我认为这个API输出的是php”-如果你是这个意思,那么你提供的链接输出的是json,而不是php?是的,我是这个意思,但实际上我知道这不是真的。但是我可以使用API获取数据。谢谢你的回答。我删除了php标记,因为这个问题与php没有任何关系(任何语言都可以返回该数据,因此与问题无关)。你是对的。我认为我没有使用嵌套的json扩展正确定义数据,这可能是问题的原因。@MagnusEriksson
public class RegionModel {
@SerializedName("strArea")
public String strArea;
}
public interface RegionAPI {
@GET("list.php?a")
Call<List<RegionModel>> getData();
}
public class MainActivity extends AppCompatActivity {
TextView regionTitle;
ArrayList<RegionModel> regionModels;
private String base_URL= "https://www.themealdb.com/api/json/v1/1/";
Retrofit retrofit;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
regionTitle=findViewById(R.id.regionTitle);
//BölgeAPI: https://www.themealdb.com/api/json/v1/1/list.php?a=list
//***Retrofit Ve JSON***
Gson gson = new GsonBuilder().setLenient().create();//gson objesi9
retrofit = new Retrofit.Builder()
.baseUrl(base_URL)
.addConverterFactory(GsonConverterFactory.create(gson))
.build();
loadData();
}
private void loadData()
{
RegionAPI regionAPI = retrofit.create(RegionAPI.class);
Call<List<RegionModel>> call = regionAPI.getData();
call.enqueue(new Callback<List<RegionModel>>() {
@Override
public void onResponse(Call<List<RegionModel>> call, Response<List<RegionModel>> response) {
if(response.isSuccessful())
{
List<RegionModel> responseList=response.body();
regionModels = new ArrayList<>(responseList);
for(RegionModel regionModel : regionModels)
{
System.out.println(regionModel.strArea);
}
}
}
@Override
public void onFailure(Call<List<RegionModel>> call, Throwable t) {
t.printStackTrace();
}
});
}
}