我尝试使用 Retrofit 将我的 JSON 解析为我的 Java
I try to parse my JSON into my Java with Retrofit
我尝试了某人的教程来使用改造在 Java 中解析 JSON。
我把教程中的 url 改成了我的 http://umkmkabupatenmalang.xyz/api/config/ 。但是当我在 Android 上尝试 运行 它时,我得到了这样的错误
这是我的MainActivity.java
import ...
public class MainActivity extends AppCompatActivity {
private RecyclerView recyclerView;
private ArrayList<AndroidVersion> data;
private DataAdapter adapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
view();
}
private void view(){
recyclerView = (RecyclerView)findViewById(R.id.card_recycler_view);
recyclerView.setHasFixedSize(true);
RecyclerView.LayoutManager layoutManager = new LinearLayoutManager(getApplicationContext());
recyclerView.setLayoutManager(layoutManager);
loadJSON();
}
private void loadJSON(){
Retrofit retrofit = new Retrofit.Builder()
.baseUrl("http://umkmkabupatenmalang.xyz/")
.addConverterFactory(GsonConverterFactory.create())
.build();
RequestInterface request = retrofit.create(RequestInterface.class);
Call<JSONResponse> call = request.getJSON();
call.enqueue(new Callback<JSONResponse>() {
@Override
public void onResponse(Call<JSONResponse> call, Response<JSONResponse> response) {
JSONResponse jsonResponse = response.body();
data = new ArrayList<>(Arrays.asList(jsonResponse.getAndroid()));
adapter = new DataAdapter(data);
recyclerView.setAdapter(adapter);
}
@Override
public void onFailure(Call<JSONResponse> call, Throwable t) {
Log.d("Error", t.getMessage());
}
});
}
}
这是我要解析的json
谁能给我解释一下错误是什么意思,并给出解决方案?
这是我的JSON回复
import com.example.skripsi.model.AndroidVersion;
public class JSONResponse {
private AndroidVersion[] android;
public AndroidVersion[] getAndroid() {
return android;
}
}
在您的 JSONResponse
class 中,您还应该提供一个 setter。
import com.google.gson.annotations.SerializedName;
import com.example.skripsi.model.AndroidVersion;
public class JSONResponse {
@SerializedName("data")
private AndroidVersion[] android;
public AndroidVersion[] getAndroid() {
return android;
}
public setAndroid(AndroidVersion[] androids){
this.android = androids;
}
}
让我知道这是否适合你。
您以后可以使用此网站将您的JSON转换为java类
Convert JSON into java classes
我尝试了某人的教程来使用改造在 Java 中解析 JSON。
我把教程中的 url 改成了我的 http://umkmkabupatenmalang.xyz/api/config/ 。但是当我在 Android 上尝试 运行 它时,我得到了这样的错误
这是我的MainActivity.java
import ...
public class MainActivity extends AppCompatActivity {
private RecyclerView recyclerView;
private ArrayList<AndroidVersion> data;
private DataAdapter adapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
view();
}
private void view(){
recyclerView = (RecyclerView)findViewById(R.id.card_recycler_view);
recyclerView.setHasFixedSize(true);
RecyclerView.LayoutManager layoutManager = new LinearLayoutManager(getApplicationContext());
recyclerView.setLayoutManager(layoutManager);
loadJSON();
}
private void loadJSON(){
Retrofit retrofit = new Retrofit.Builder()
.baseUrl("http://umkmkabupatenmalang.xyz/")
.addConverterFactory(GsonConverterFactory.create())
.build();
RequestInterface request = retrofit.create(RequestInterface.class);
Call<JSONResponse> call = request.getJSON();
call.enqueue(new Callback<JSONResponse>() {
@Override
public void onResponse(Call<JSONResponse> call, Response<JSONResponse> response) {
JSONResponse jsonResponse = response.body();
data = new ArrayList<>(Arrays.asList(jsonResponse.getAndroid()));
adapter = new DataAdapter(data);
recyclerView.setAdapter(adapter);
}
@Override
public void onFailure(Call<JSONResponse> call, Throwable t) {
Log.d("Error", t.getMessage());
}
});
}
}
这是我要解析的json
谁能给我解释一下错误是什么意思,并给出解决方案?
这是我的JSON回复
import com.example.skripsi.model.AndroidVersion;
public class JSONResponse {
private AndroidVersion[] android;
public AndroidVersion[] getAndroid() {
return android;
}
}
在您的 JSONResponse
class 中,您还应该提供一个 setter。
import com.google.gson.annotations.SerializedName;
import com.example.skripsi.model.AndroidVersion;
public class JSONResponse {
@SerializedName("data")
private AndroidVersion[] android;
public AndroidVersion[] getAndroid() {
return android;
}
public setAndroid(AndroidVersion[] androids){
this.android = androids;
}
}
让我知道这是否适合你。
您以后可以使用此网站将您的JSON转换为java类 Convert JSON into java classes