简体   繁体   中英

JSON parce in android (Issue in try{})

I have some troubles with parse JSON in my android app. This is URL " https://gesmetrics.ru/testpiers.php ", where i saved my data. In AsyncTask i'm trying to parse, but in try{...} code stop working. I really trying to fix it, but i have no idea. This is my function. DataJSON - it is get and set for my data. That's all my code.

public class CardViewFragment extends Fragment {

public static final String TAG = "CardViewFragment";

private List<DataJSON> dataJSONList;
private RecyclerView recyclerView;
RVAdapter rvAdapter;

@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
    View rootView = inflater.inflate(R.layout.activity_card_view_fragment, container, false);

    dataJSONList = new ArrayList<>();
    recyclerView = (RecyclerView) rootView.findViewById(R.id.recyclerView);

    LinearLayoutManager linearLayoutManager = new LinearLayoutManager(getActivity());
    recyclerView.setLayoutManager(linearLayoutManager);
    recyclerView.setHasFixedSize(true);

    loadDataFromServer(0);
    //testData();

    rvAdapter = new RVAdapter(dataJSONList);
    recyclerView.setAdapter(rvAdapter);

    getActivity();
    return rootView;
}

private void testData(){
    //dataJSONList.add(new DataJSON(0, "RiverIsland", "Moscow", "Moscow is the capital of Russia"));
    //dataJSONList.add(new DataJSON(1, "kek", "Lol", "Scream"));
    DataJSON data2 = new DataJSON(0, "RiverIsland", "Moscow", "Moscow is the capital of Russia");
    dataJSONList.add(data2);
}

String strJson;
private void loadDataFromServer(final int id)  {

    AsyncTask<Void, Void, String> task = new AsyncTask<Void, Void, String>(){
        @Override
        protected String doInBackground(Void... voids) {
            OkHttpClient client = new OkHttpClient();
            Request request = new Request.Builder()
                    .url("https://gesmetrics.ru/testpiers.php").build();
            Response response;

            try {
                response = client.newCall(request).execute();
                strJson = response.body().string();
            } catch (IOException e) {
                e.printStackTrace();
            }

            return strJson;
        }

        @Override
        protected void onPostExecute(String strJson) {
            super.onPostExecute(strJson);
            Log.d("myLog", strJson);

            //DataJSON data2 = new DataJSON(0, "RiverIsland", "Moscow", "Moscow is the capital of Russia");
            //dataJSONList.add(data2);

            try {
                JSONArray jsonArray = new JSONArray(strJson);
                for (int i = 0; i < jsonArray.length(); i++) {
                    JSONObject object = jsonArray.getJSONObject(i);

                    int id = object.getInt("pierId");
                    String name = object.getString("pierName");
                    String region = object.getString("region");
                    String description = object.getString("description");
                    DataJSON data = new DataJSON(id, name, region, description);
                    //nothing happens here
                    dataJSONList.add(data);
                }
            } catch (JSONException e) {
                System.out.println("Issue");
            }
        }

    };
    task.execute();
}

}

Thank's a lot!

Your Json response is invalid . In the first description there is a double quote in middle which is causing the issue

Remove double quote after. One of the Adriatic" s are place it as One of the Adriatic's in the response

you can always check if your response is valid or not over here or here

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM