我尝试使用 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