Đây là lỗi gì? Làm thế nào tôi có thể sửa lỗi này? Ứng dụng của tôi đang chạy nhưng không thể tải dữ liệu. Và đây là Lỗi của tôi: Sử dụng JsonReader.setLenient (true) để chấp nhận JSON không đúng định dạng tại dòng 1 cột 1 đường dẫn $
Đây là mảnh vỡ của tôi:
public class news extends Fragment {
private RecyclerView recyclerView;
private ArrayList<Deatails> data;
private DataAdapter adapter;
private View myFragmentView;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
myFragmentView = inflater.inflate(R.layout.news, container, false);
initViews();
return myFragmentView;
}
private void initViews() {
recyclerView = (RecyclerView) myFragmentView.findViewById(R.id.card_recycler_view);
RecyclerView.LayoutManager layoutManager = new LinearLayoutManager(getActivity().getApplicationContext());
recyclerView.setHasFixedSize(true);
recyclerView.setLayoutManager(layoutManager);
data = new ArrayList<Deatails>();
adapter = new DataAdapter(getActivity(), data);
recyclerView.setAdapter(adapter);
new Thread()
{
public void run()
{
getActivity().runOnUiThread(new Runnable() {
@Override
public void run() {
loadJSON();
}
});
}
}
.start();
}
private void loadJSON() {
if (isNetworkConnected()){
HttpLoggingInterceptor interceptor = new HttpLoggingInterceptor();
interceptor.setLevel(HttpLoggingInterceptor.Level.BODY);
OkHttpClient client = new OkHttpClient.Builder()
.addInterceptor(interceptor)
.retryOnConnectionFailure(true)
.connectTimeout(15, TimeUnit.SECONDS)
.build();
Gson gson = new GsonBuilder()
.setLenient()
.create();
Retrofit retrofit = new Retrofit.Builder()
.baseUrl("http://www.memaraneha.ir/")
.client(client)
.addConverterFactory(GsonConverterFactory.create(gson))
.build();
RequestInterface request = retrofit.create(RequestInterface.class);
Call<JSONResponse> call = request.getJSON();
final ProgressDialog progressDialog = new ProgressDialog(getActivity());
progressDialog.show();
call.enqueue(new Callback<JSONResponse>() {
@Override
public void onResponse(Call<JSONResponse> call, Response<JSONResponse> response) {
progressDialog.dismiss();
JSONResponse jsonResponse = response.body();
data.addAll(Arrays.asList(jsonResponse.getAndroid()));
adapter.notifyDataSetChanged();
}
@Override
public void onFailure(Call<JSONResponse> call, Throwable t) {
progressDialog.dismiss();
Log.d("Error", t.getMessage());
}
});
}
else {
Toast.makeText(getActivity().getApplicationContext(), "Internet is disconnected", Toast.LENGTH_LONG).show();}
}
private boolean isNetworkConnected() {
ConnectivityManager cm = (ConnectivityManager) getActivity().getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo ni = cm.getActiveNetworkInfo();
if (ni == null) {
// There are no active networks.
return false;
} else
return true;
}
}
RequestInterface:
public interface RequestInterface {
@GET("Erfan/news.php")
Call<JSONResponse> getJSON();
}
CẬP NHẬT
Luôn luôn là lỗi này không phải về json của bạn, nó có thể là do bạn yêu cầu sai, để xử lý tốt hơn, trước tiên hãy kiểm tra yêu cầu của bạn trong bưu tá nếu bạn nhận được phản hồi sau đó so sánh phản hồi json với mô hình của bạn nếu không có gì sai thì lỗi này đến từ yêu cầu sai của bạn, cũng có thể xảy ra khi phản hồi của bạn không phải josn (trong một số trường hợp, phản hồi có thể là html)
System.out.println
, Đúng? Trong Android, bạn có thể sử dụng Log
lớp học, nhưng điều đó không quan trọng. Bạn không nhận được dữ liệu hoặc lỗi đang xảy ra tại hoặc xung quanh JSONResponse jsonResponse = response.body();
. Tôi không biết cách khắc phục lỗi của bạn vì nó có thể liên quan đến mạng. Bạn sẽ có thể tự mình kiểm tra giá trị đó.
response.body()