@newdancer

Прошу помощи с json? Вываливается с ошибкой почему?

Прошу помощи с json? Вываливается с ошибкой!
Фрагмент где пытаюсь получить данные:
public class FilmFragment extends ListFragment
{
    public static final String ARG_FILM_NUMBER = "film_number";

    // Для загрузки контента
    private ProgressDialog pDialog;

    // Создаем JSON парсер объект
    JSONParser jParser = new JSONParser();

    // url to get all products list
    private static String url_all_films = "http://kinoobzor.org/android/get_all_cinema.php";

    // JSON Node names
    private static final String TAG_SUCCESS = "success";
    private static final String TAG_FILM = "dle_post";
    private static final String TAG_PID = "pid";
    private static final String TAG_TITLE = "name";
    private static final String TAG_CATEGORY = "category";

    // products JSONArray
    JSONArray films = null;

    ArrayList<Cinema> cinemas = new ArrayList<Cinema>();
    CinemaAdapter cinemaAdapter;

    View rootView;
    Context ctx;
    Activity act;

    public FilmFragment() {
        // Для фрагмента требуется пустой конструктор
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        rootView = inflater.inflate(R.layout.fragment_film, container, false);
        int id_cat = getArguments().getInt(ARG_FILM_NUMBER);

        // получаем названия категорий фильмов и выводим в левом меню
        String[] cat_film=getResources().getStringArray(R.array.category_film_array);
        getActivity().setTitle(cat_film[id_cat]);

        // генерируем данные для адаптера
        new LoadAllCinema().execute();
        return rootView;
    }

    // встроенный класс для загрузки данных в потоке
    class LoadAllCinema extends AsyncTask<String, String, String> {

        @Override
        protected void onPreExecute() {
            super.onPreExecute();
            pDialog = new ProgressDialog(getActivity());
            pDialog.setMessage("Loading products. Please wait...");
            pDialog.setIndeterminate(false);
            pDialog.setCancelable(false);
            pDialog.show();
        }

        protected String doInBackground(String... args) {
            // Building Parameters
            List<NameValuePair> params = new ArrayList<NameValuePair>();
            // getting JSON string from URL
            JSONObject json = jParser.makeHttpRequest(url_all_films, "GET", params);

            // Check your log cat for JSON reponse
           // Log.d("All Cinemas: ", json.toString());

            try {
                // Checking for SUCCESS TAG
                int success = json.getInt(TAG_SUCCESS);

                if (success == 1) {
                    films = json.getJSONArray(TAG_FILM);

                    for (int i = 0; i <= films.length(); i++) {
                        JSONObject c = films.getJSONObject(i);

                        // получаем данные
                        String id = c.getString(TAG_PID);
                        String title = c.getString(TAG_TITLE);
                        String category = c.getString(TAG_CATEGORY);

                        cinemas.add(new Cinema(Integer.valueOf(id), title,category));
                    }
                } else {
                    // no products found
                }
            } catch (JSONException e) {
                e.printStackTrace();
            }

            return null;
        }

        protected void onPostExecute(String file_url) {
            // dismiss the dialog after getting all products
            pDialog.dismiss();
            // updating UI from Background Thread
            act.runOnUiThread(new Runnable() {
                public void run() {

                    // создаем адаптер
                    cinemaAdapter = new CinemaAdapter(getContext(), cinemas);

                    // настраиваем список
                    ListView lvMain = getListView();
                    lvMain.setAdapter(cinemaAdapter);
                }
            });

        }

    }
}


приложение вываливается с ошиюкой в строке
int success = json.getInt(TAG_SUCCESS);
сама ошибка:
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'int org.json.JSONObject.getInt(java.lang.String)' on a null object reference
                                                                                  at net.kinomovies.movietrailers.FilmFragment$LoadAllCinema.doInBackground(FilmFragment.java:98)
                                                                                  at net.kinomovies.movietrailers.FilmFragment$LoadAllCinema.doInBackground(FilmFragment.java:75)
                                                                                  at android.os.AsyncTask$2.call(AsyncTask.java:288)
                                                                                  at java.util.concurrent.FutureTask.run(FutureTask.java:237)
                                                                                  at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:231) 
                                                                                  at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112) 
                                                                                  at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587) 
                                                                                  at java.lang.Thread.run(Thread.java:818) 

что не так?
  • Вопрос задан
  • 1640 просмотров
Пригласить эксперта
Ответы на вопрос 3
BuriK666
@BuriK666
Компьютерный псих
https://jsonformatter.curiousconcept.com/
Unicode символы должны быть экранированы с помощью \u...
Ответ написан
stasuss
@stasuss
быдлокодер со стажем
ну очевидно же. json не пропарсился)
Ответ написан
@newdancer Автор вопроса
Андрей Буров: Не совсем понял что именно удалить. Вот так выглядит файл php:
<?php
 
$response = array();

require 'db_connect.php';
 
$db = new DB_CONNECT();

$result = mysql_query("SELECT *FROM dle_post ORDER BY id DESC") or die(mysql_error());
 
if (mysql_num_rows($result) > 0) {
    $response["dle_post"] = array();
 
    while ($row = mysql_fetch_array($result)) {
        $cinema = array();
        $cinema["pid"] = $row["id"];
        $cinema["title"] = $row["title"];
        $cinema["category"] = $row["category"];
        $cinema["short_story"] = $row["short_story"];
        /*$cinema["xfields"] = $row["xfields"];*/
		
		$masxfields = array();
		$masxfields2 = array();
		$masxfields3 = array();
		$namescr = "screens";
		$masxfields=split("\\|\\|", $row["xfields"], -1);
		for ($i = 1; $i < count($masxfields); $i++) 
		{ 
			$masxfields2=split("\\|", $masxfields[$i], 2);
			if ($masxfields2[0] == $namescr)
			{
				preg_match_all("#src=[\"']([^\"']+)#", $masxfields2[1], $masxfields3);
				$cinema[$masxfields2[0]] = $masxfields3[1][0].", ".$masxfields3[1][1].", ".$masxfields3[1][2];
			}
			else
			{
				$cinema[$masxfields2[0]] = $masxfields2[1];
			}
		} 
        array_push($response["dle_post"], $cinema);
    }
    $response["success"] = 1;

	$datastr=json_encode($response, JSON_UNESCAPED_UNICODE);/*кодируем в utf-8*/
	/*$datastr=stripslashes($datastr);*//*убираем экранирование*/
	$datastr=strip_tags($datastr, '<img>');/*убираем теги кроме img*/

    echo $datastr;
} else {
    $response["success"] = 0;
    $response["message"] = "No cinema found";

    echo json_encode($response);
}
?>
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы