我尝试使用 Retrofit 将我的 JSON 解析为我的 Java
Posted
技术标签:
【中文标题】我尝试使用 Retrofit 将我的 JSON 解析为我的 Java【英文标题】:I try to parse my JSON into my Java with Retrofit 【发布时间】:2020-07-28 01:37:50 【问题描述】:我尝试了某人的教程来使用改造在 Java 中解析 JSON。
我用我的 http://umkmkabupatenmalang.xyz/api/config/ 更改了教程中的 url。但是当我尝试在 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
谁能给我解释一下错误是什么意思,并给出解决方案?
这是我的 JSONResponse
import com.example.skripsi.model.AndroidVersion;
public class JSONResponse
private AndroidVersion[] android;
public AndroidVersion[] getAndroid()
return android;
【问题讨论】:
MainActivity.java 第 57 行有什么内容?这就是运行时报告的问题... 什么是 JSONResponse 类? 你可以在上面看到,我已经添加了我的 JSONResponse 这是在第 57 行 -> data = new ArrayList(Arrays.asList(jsonResponse.getAndroid())); 【参考方案1】:在您的 JSONResponse
类中,您还应该提供一个 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;
让我知道这是否适合你。
【讨论】:
【参考方案2】:以后您可以使用此网站将您的 JSON 转换为 java 类 Convert JSON into java classes
【讨论】:
以上是关于我尝试使用 Retrofit 将我的 JSON 解析为我的 Java的主要内容,如果未能解决你的问题,请参考以下文章
无法通过 @POST 请求使用 Retrofit 解析 JSON 响应和参数
使用 Retrofit 和 Kotlin 使用多态 Json
Retrofit2.0得到MalformedJsonException,而json似乎正确吗?
如何使用Retrofit 2和Gson来模拟JSON响应“密钥”频繁更改的数据