Example usage for org.json JSONTokener JSONTokener

List of usage examples for org.json JSONTokener JSONTokener

Introduction

In this page you can find the example usage for org.json JSONTokener JSONTokener.

Prototype

public JSONTokener(String s) 

Source Link

Document

Construct a JSONTokener from a string.

Usage

From source file:at.zone.madeleine.ir.PixlinqSearch.java

private String parsePixlinqResponse(String response) {
    JSONObject responseObject;//  w ww.  jav a  2s  .c o  m
    String result = null;

    if (response != null) {
        try {
            responseObject = (JSONObject) new JSONTokener(response).nextValue();
            JSONArray matches = responseObject.getJSONArray("matches");
            JSONArray errors = responseObject.getJSONArray("errors");
            if (matches.length() > 0) {
                JSONObject match = matches.getJSONObject(0);
                String title = match.getString("title");
                String message = match.getString("message");
                String sanatizedMessage = message.split("\\.")[0];

                result = sanatizedMessage;
            }
        } catch (JSONException e) {
            e.printStackTrace();
        }
    } else {
        result = null;
    }
    return result;
}

From source file:cn.xdf.thinkutils.http2.JsonHttpResponseHandler.java

protected Object parseResponse(String responseBody) throws JSONException {
    Object result = null;//from w w  w. j av  a2s . c o  m
    //trim the string to prevent start with blank, and test if the string is valid JSON, because the parser don't do this :(. If Json is not valid this will return null
    responseBody = responseBody.trim();
    if (responseBody.startsWith("{") || responseBody.startsWith("[")) {
        result = new JSONTokener(responseBody).nextValue();
    }
    if (result == null) {
        result = responseBody;
    }
    return result;
}

From source file:com.BeeFramework.Utils.Utils.java

public static Object parseResponse(String responseBody) throws JSONException {
    Object result = null;/*from   ww  w. j a  va  2 s  .c o m*/
    //trim the string to prevent start with blank, and test if the string is valid JSON, because the parser don't do this :(. If Json is not valid this will return null
    responseBody = responseBody.trim();
    if (responseBody.startsWith("{") || responseBody.startsWith("[")) {
        result = new JSONTokener(responseBody).nextValue();
    }
    if (result == null) {
        result = responseBody;
    }
    return result;
}

From source file:net.mandaria.radioreddit.apis.RadioRedditAPI.java

public static RadioStreams GetStreams(Context context, RadioRedditApplication application) {
    RadioStreams radiostreams = new RadioStreams();
    radiostreams.ErrorMessage = "";
    radiostreams.RadioStreams = new ArrayList<RadioStream>();

    try {/*from   www .j  a  v  a 2 s  .  c o  m*/
        String url = context.getString(R.string.radio_reddit_streams);
        String outputStreams = "";
        boolean errorGettingStreams = false;

        try {
            outputStreams = HTTPUtil.get(context, url);
        } catch (Exception ex) {
            errorGettingStreams = true;
            radiostreams.ErrorMessage = context.getString(R.string.error_RadioRedditServerIsDownNotification);
            application.radioRedditIsDownErrorMessage = radiostreams.ErrorMessage;
            application.isRadioRedditDown = true;
        }

        if (!errorGettingStreams && outputStreams.length() > 0) {
            JSONTokener tokener = new JSONTokener(outputStreams);
            JSONObject json = new JSONObject(tokener);

            JSONObject streams = json.getJSONObject("streams");
            JSONArray streams_names = streams.names();
            ArrayList<RadioStream> list_radiostreams = new ArrayList<RadioStream>();

            // loop through each stream
            for (int i = 0; i < streams.length(); i++) {
                String name = streams_names.getString(i);
                JSONObject stream = streams.getJSONObject(name);

                RadioStream radiostream = new RadioStream();
                radiostream.Name = name;
                // if(stream.has("type"))
                radiostream.Type = stream.getString("type");
                radiostream.Description = stream.getString("description");
                radiostream.Status = stream.getString("status");

                // call status.json to get Relay
                // form url radioreddit.com + status + json
                String status_url = context.getString(R.string.radio_reddit_base_url) + radiostream.Status
                        + context.getString(R.string.radio_reddit_status);

                String outputStatus = "";
                boolean errorGettingStatus = false;

                try {
                    outputStatus = HTTPUtil.get(context, status_url);
                } catch (Exception ex) {
                    errorGettingStatus = true;
                    radiostreams.ErrorMessage = context
                            .getString(R.string.error_RadioRedditServerIsDownNotification);
                }

                //Log.e("RadioReddit", "Length of output: "+ outputStatus.length() + "; Content of output: " + outputStatus);
                // TODO: does  outputStatus.length() > 0 need to be checked here and return a ErrorMessage back and set ErrorGettingStatus = true? 

                if (!errorGettingStatus && outputStatus.length() > 0) {
                    JSONTokener status_tokener = new JSONTokener(outputStatus);
                    JSONObject status_json = new JSONObject(status_tokener);

                    radiostream.Online = Boolean.parseBoolean(status_json.getString("online").toLowerCase());

                    if (radiostream.Online == true) // if offline, no other nodes are available
                    {
                        radiostream.Relay = status_json.getString("relay");

                        list_radiostreams.add(radiostream);
                    }
                }
            }

            // JSON parsing reverses the list for some reason, fixing it...
            if (list_radiostreams.size() > 0) {
                // Sorting will happen later on select station activity
                //Collections.reverse(list_radiostreams);

                radiostreams.RadioStreams = list_radiostreams;
                application.isRadioRedditDown = false;
            } else {
                radiostreams.ErrorMessage = context.getString(R.string.error_NoStreams);
                application.radioRedditIsDownErrorMessage = radiostreams.ErrorMessage;
                application.isRadioRedditDown = true;
            }
        }
    } catch (Exception ex) {
        // We fail to get the streams...
        CustomExceptionHandler ceh = new CustomExceptionHandler(context);
        ceh.sendEmail(ex);

        radiostreams.ErrorMessage = ex.toString();
        ex.printStackTrace();
    }

    return radiostreams;
}

From source file:net.mandaria.radioreddit.apis.RadioRedditAPI.java

public static RadioSong GetCurrentSongInformation(Context context, RadioRedditApplication application) {
    RadioSong radiosong = new RadioSong();
    radiosong.ErrorMessage = "";

    try {//from  ww  w.  j  a  v  a 2s  .c  om
        String status_url = context.getString(R.string.radio_reddit_base_url) + application.CurrentStream.Status
                + context.getString(R.string.radio_reddit_status);

        String outputStatus = "";
        boolean errorGettingStatus = false;

        try {
            outputStatus = HTTPUtil.get(context, status_url);
        } catch (Exception ex) {
            ex.printStackTrace();
            errorGettingStatus = true;
            // For now, not used. It is acceptable to error out and not alert the user
            // radiosong.ErrorMessage = context.getString(R.string.error_RadioRedditServerIsDownNotification);
        }

        if (!errorGettingStatus && outputStatus.length() > 0) {
            JSONTokener status_tokener = new JSONTokener(outputStatus);
            JSONObject status_json = new JSONObject(status_tokener);

            radiosong.Playlist = status_json.getString("playlist");

            JSONObject songs = status_json.getJSONObject("songs");
            JSONArray songs_array = songs.getJSONArray("song");

            // get the first song in the array
            JSONObject song = songs_array.getJSONObject(0);
            radiosong.ID = song.getInt("id");
            radiosong.Title = song.getString("title");
            radiosong.Artist = song.getString("artist");
            radiosong.Redditor = song.getString("redditor");
            radiosong.Genre = song.getString("genre");
            radiosong.CumulativeScore = song.getString("score");

            if (radiosong.CumulativeScore.equals("{}"))
                radiosong.CumulativeScore = null;

            radiosong.Reddit_title = song.getString("reddit_title");
            radiosong.Reddit_url = song.getString("reddit_url");
            if (song.has("preview_url"))
                radiosong.Preview_url = song.getString("preview_url");
            if (song.has("download_url"))
                radiosong.Download_url = song.getString("download_url");
            if (song.has("bandcamp_link"))
                radiosong.Bandcamp_link = song.getString("bandcamp_link");
            if (song.has("bandcamp_art"))
                radiosong.Bandcamp_art = song.getString("bandcamp_art");
            if (song.has("itunes_link"))
                radiosong.Itunes_link = song.getString("itunes_link");
            if (song.has("itunes_art"))
                radiosong.Itunes_art = song.getString("itunes_art");
            if (song.has("itunes_price"))
                radiosong.Itunes_price = song.getString("itunes_price");

            // get vote score 
            String reddit_info_url = context.getString(R.string.reddit_link_by)
                    + URLEncoder.encode(radiosong.Reddit_url);

            String outputRedditInfo = "";
            boolean errorGettingRedditInfo = false;

            try {
                outputRedditInfo = HTTPUtil.get(context, reddit_info_url);
            } catch (Exception ex) {
                ex.printStackTrace();
                errorGettingRedditInfo = true;
                // For now, not used. It is acceptable to error out and not alert the user
                // radiosong.ErrorMessage = "Unable to connect to reddit";//context.getString(R.string.error_RadioRedditServerIsDownNotification);
            }

            if (!errorGettingRedditInfo && outputRedditInfo.length() > 0) {
                // Log.e("radio_reddit_test", "Length: " + outputRedditInfo.length());
                // Log.e("radio_reddit_test", "Value: " + outputRedditInfo); // TODO: sometimes the value contains "error: 404", need to check for that. (We can probably safely ignore this for now)
                JSONTokener reddit_info_tokener = new JSONTokener(outputRedditInfo);
                JSONObject reddit_info_json = new JSONObject(reddit_info_tokener);

                JSONObject data = reddit_info_json.getJSONObject("data");

                // default value of score
                String score = context.getString(R.string.vote_to_submit_song);
                String likes = "null";
                String name = "";

                JSONArray children_array = data.getJSONArray("children");

                // Song hasn't been submitted yet
                if (children_array.length() > 0) {
                    JSONObject children = children_array.getJSONObject(0);

                    JSONObject children_data = children.getJSONObject("data");
                    score = children_data.getString("score");

                    likes = children_data.getString("likes");
                    name = children_data.getString("name");
                }

                radiosong.Score = score;
                radiosong.Likes = likes;
                radiosong.Name = name;
            } else {
                radiosong.Score = "?";
                radiosong.Likes = "null";
                radiosong.Name = "";
            }

            return radiosong;
        }
        return null;
    } catch (Exception ex) {
        // We fail to get the current song information...
        CustomExceptionHandler ceh = new CustomExceptionHandler(context);
        ceh.sendEmail(ex);

        ex.printStackTrace();
        radiosong.ErrorMessage = ex.toString();
        return radiosong;
    }
}

From source file:net.mandaria.radioreddit.apis.RadioRedditAPI.java

public static RadioEpisode GetCurrentEpisodeInformation(Context context, RadioRedditApplication application) {
    RadioEpisode radioepisode = new RadioEpisode();
    radioepisode.ErrorMessage = "";

    try {//from w ww.j  a v a  2 s. c o m
        String status_url = context.getString(R.string.radio_reddit_base_url) + application.CurrentStream.Status
                + context.getString(R.string.radio_reddit_status);

        String outputStatus = "";
        boolean errorGettingStatus = false;

        try {
            outputStatus = HTTPUtil.get(context, status_url);
        } catch (Exception ex) {
            ex.printStackTrace();
            errorGettingStatus = true;
            // For now, not used. It is acceptable to error out and not alert the user
            // radiosong.ErrorMessage = context.getString(R.string.error_RadioRedditServerIsDownNotification);
        }

        if (!errorGettingStatus && outputStatus.length() > 0) {
            JSONTokener status_tokener = new JSONTokener(outputStatus);
            JSONObject status_json = new JSONObject(status_tokener);

            radioepisode.Playlist = status_json.getString("playlist");

            JSONObject episodes = status_json.getJSONObject("episodes");
            JSONArray episodes_array = episodes.getJSONArray("episode");

            // get the first episode in the array
            JSONObject song = episodes_array.getJSONObject(0);
            radioepisode.ID = song.getInt("id");
            radioepisode.EpisodeTitle = song.getString("episode_title");
            radioepisode.EpisodeDescription = song.getString("episode_description");
            radioepisode.EpisodeKeywords = song.getString("episode_keywords");
            radioepisode.ShowTitle = song.getString("show_title");
            radioepisode.ShowHosts = song.getString("show_hosts").replaceAll(",", ", ");
            radioepisode.ShowRedditors = song.getString("show_redditors").replaceAll(",", ", ");
            radioepisode.ShowGenre = song.getString("show_genre");
            radioepisode.ShowFeed = song.getString("show_feed");
            radioepisode.Reddit_title = song.getString("reddit_title");
            radioepisode.Reddit_url = song.getString("reddit_url");
            if (song.has("preview_url"))
                radioepisode.Preview_url = song.getString("preview_url");
            if (song.has("download_url"))
                radioepisode.Download_url = song.getString("download_url");

            // get vote score
            String reddit_info_url = context.getString(R.string.reddit_link_by)
                    + URLEncoder.encode(radioepisode.Reddit_url);

            String outputRedditInfo = "";
            boolean errorGettingRedditInfo = false;

            try {
                outputRedditInfo = HTTPUtil.get(context, reddit_info_url);
            } catch (Exception ex) {
                ex.printStackTrace();
                errorGettingRedditInfo = true;
                // For now, not used. It is acceptable to error out and not alert the user
                // radiosong.ErrorMessage = "Unable to connect to reddit";//context.getString(R.string.error_RadioRedditServerIsDownNotification);
            }

            if (!errorGettingRedditInfo && outputRedditInfo.length() > 0) {
                // Log.e("radio_reddit_test", "Length: " + outputRedditInfo.length());
                // Log.e("radio_reddit_test", "Value: " + outputRedditInfo); // TODO: sometimes the value contains "error: 404", need to check for that (We can probably safely ignore this for now)
                JSONTokener reddit_info_tokener = new JSONTokener(outputRedditInfo);
                JSONObject reddit_info_json = new JSONObject(reddit_info_tokener);

                JSONObject data = reddit_info_json.getJSONObject("data");

                // default value of score
                String score = context.getString(R.string.vote_to_submit_song);
                String likes = "null";
                String name = "";

                JSONArray children_array = data.getJSONArray("children");

                // Episode hasn't been submitted yet
                if (children_array.length() > 0) {
                    JSONObject children = children_array.getJSONObject(0);

                    JSONObject children_data = children.getJSONObject("data");
                    score = children_data.getString("score");

                    likes = children_data.getString("likes");
                    name = children_data.getString("name");
                }

                radioepisode.Score = score;
                radioepisode.Likes = likes;
                radioepisode.Name = name;
            } else {
                radioepisode.Score = "?";
                radioepisode.Likes = "null";
                radioepisode.Name = "";
            }

            return radioepisode;
        }
        return null;
    } catch (Exception ex) {
        // We fail to get the current song information...
        CustomExceptionHandler ceh = new CustomExceptionHandler(context);
        ceh.sendEmail(ex);

        ex.printStackTrace();
        radioepisode.ErrorMessage = ex.toString();
        return radioepisode;
    }

}

From source file:net.mandaria.radioreddit.apis.RadioRedditAPI.java

public static List<RadioSong> GetTopChartsByType(Context context, RadioRedditApplication application,
        String type) {//from  w w  w .  j  a v  a2s.c  o m
    List<RadioSong> radiosongs = new ArrayList<RadioSong>();

    try {
        String chart_url = "";

        if (type.equals("all"))
            chart_url = context.getString(R.string.radio_reddit_charts_all);
        else if (type.equals("month"))
            chart_url = context.getString(R.string.radio_reddit_charts_month);
        else if (type.equals("week"))
            chart_url = context.getString(R.string.radio_reddit_charts_week);
        else if (type.equals("day"))
            chart_url = context.getString(R.string.radio_reddit_charts_day);

        // TODO: might could merge this code with GetCurrentSongInformation

        String outputStatus = "";
        boolean errorGettingStatus = false;

        try {
            outputStatus = HTTPUtil.get(context, chart_url);
        } catch (Exception ex) {
            ex.printStackTrace();
            errorGettingStatus = true;
            // For now, not used. It is acceptable to error out and not alert the user
            // radiosong.ErrorMessage = context.getString(R.string.error_RadioRedditServerIsDownNotification);
        }

        if (!errorGettingStatus && outputStatus.length() > 0) {
            JSONTokener status_tokener = new JSONTokener(outputStatus);
            JSONObject status_json = new JSONObject(status_tokener);

            JSONObject songs = status_json.getJSONObject("songs");
            JSONArray songs_array = songs.getJSONArray("song");

            // get the first song in the array
            for (int i = 0; i < songs_array.length(); i++) {
                RadioSong radiosong = new RadioSong();
                radiosong.ErrorMessage = "";

                JSONObject song = songs_array.getJSONObject(i);
                //radiosong.ID = song.getInt("id");
                radiosong.Title = song.getString("title");
                radiosong.Artist = song.getString("artist");
                radiosong.Redditor = song.getString("redditor");
                radiosong.Genre = song.getString("genre");
                //radiosong.CumulativeScore = song.getString("score");

                //if(radiosong.CumulativeScore.equals("{}"))
                //   radiosong.CumulativeScore = null;   

                radiosong.Reddit_title = song.getString("reddit_title");
                radiosong.Reddit_url = song.getString("reddit_url");
                if (song.has("preview_url"))
                    radiosong.Preview_url = song.getString("preview_url");
                if (song.has("download_url"))
                    radiosong.Download_url = song.getString("download_url");
                if (song.has("bandcamp_link"))
                    radiosong.Bandcamp_link = song.getString("bandcamp_link");
                if (song.has("bandcamp_art"))
                    radiosong.Bandcamp_art = song.getString("bandcamp_art");
                if (song.has("itunes_link"))
                    radiosong.Itunes_link = song.getString("itunes_link");
                if (song.has("itunes_art"))
                    radiosong.Itunes_art = song.getString("itunes_art");
                if (song.has("itunes_price"))
                    radiosong.Itunes_price = song.getString("itunes_price");

                radiosongs.add(radiosong);
            }
        }
    } catch (Exception ex) {
        // We fail to get the current song information...
        CustomExceptionHandler ceh = new CustomExceptionHandler(context);
        ceh.sendEmail(ex);

        ex.printStackTrace();
        // TODO: return error message?? Might need to wrap List<RadioSong> in an object that has an ErrorMessage data member
        //radiosong.ErrorMessage = ex.toString();
        //return radiosong;
    }
    return radiosongs;
}

From source file:net.mandaria.radioreddit.apis.RadioRedditAPI.java

public static RadioSong GetSongVoteScore(Context context, RadioRedditApplication application,
        RadioSong radiosong) {//  w ww  .j  av a  2s .c  o  m
    try {
        // get vote score 
        String reddit_info_url = context.getString(R.string.reddit_link_by)
                + URLEncoder.encode(radiosong.Reddit_url);

        String outputRedditInfo = "";
        boolean errorGettingRedditInfo = false;

        try {
            outputRedditInfo = HTTPUtil.get(context, reddit_info_url);
        } catch (Exception ex) {
            ex.printStackTrace();
            errorGettingRedditInfo = true;
            // For now, not used. It is acceptable to error out and not alert the user
            // radiosong.ErrorMessage = "Unable to connect to reddit";//context.getString(R.string.error_RadioRedditServerIsDownNotification);
        }

        if (!errorGettingRedditInfo && outputRedditInfo.length() > 0) {
            // Log.e("radio_reddit_test", "Length: " + outputRedditInfo.length());
            // Log.e("radio_reddit_test", "Value: " + outputRedditInfo); // TODO: sometimes the value contains "error: 404", need to check for that. (We can probably safely ignore this for now)
            JSONTokener reddit_info_tokener = new JSONTokener(outputRedditInfo);
            JSONObject reddit_info_json = new JSONObject(reddit_info_tokener);

            JSONObject data = reddit_info_json.getJSONObject("data");

            // default value of score
            String score = context.getString(R.string.vote_to_submit_song);
            String likes = "null";
            String name = "";

            JSONArray children_array = data.getJSONArray("children");

            // Song hasn't been submitted yet
            if (children_array.length() > 0) {
                JSONObject children = children_array.getJSONObject(0);

                JSONObject children_data = children.getJSONObject("data");
                score = children_data.getString("score");

                likes = children_data.getString("likes");
                name = children_data.getString("name");
            }

            radiosong.Score = score;
            radiosong.Likes = likes;
            radiosong.Name = name;
        } else {
            radiosong.Score = "?";
            radiosong.Likes = "null";
            radiosong.Name = "";
        }
    } catch (Exception ex) {
        // We fail to get the vote information...
        CustomExceptionHandler ceh = new CustomExceptionHandler(context);
        ceh.sendEmail(ex);

        ex.printStackTrace();
        // return error message??
        radiosong.ErrorMessage = context.getString(R.string.error_GettingVoteInformation);
        //return radiosong;
    }

    return radiosong;
}

From source file:net.mandaria.radioreddit.apis.RadioRedditAPI.java

public static RadioEpisode GetEpisodeVoteScore(Context context, RadioRedditApplication application,
        RadioEpisode radioepisode) {//from   w w w .j  av  a2 s. com
    try {
        // get vote score 
        String reddit_info_url = context.getString(R.string.reddit_link_by)
                + URLEncoder.encode(radioepisode.Reddit_url);

        String outputRedditInfo = "";
        boolean errorGettingRedditInfo = false;

        try {
            outputRedditInfo = HTTPUtil.get(context, reddit_info_url);
        } catch (Exception ex) {
            ex.printStackTrace();
            errorGettingRedditInfo = true;
            // For now, not used. It is acceptable to error out and not alert the user
            // radiosong.ErrorMessage = "Unable to connect to reddit";//context.getString(R.string.error_RadioRedditServerIsDownNotification);
        }

        if (!errorGettingRedditInfo && outputRedditInfo.length() > 0) {
            // Log.e("radio_reddit_test", "Length: " + outputRedditInfo.length());
            // Log.e("radio_reddit_test", "Value: " + outputRedditInfo); // TODO: sometimes the value contains "error: 404", need to check for that. (We can probably safely ignore this for now)
            JSONTokener reddit_info_tokener = new JSONTokener(outputRedditInfo);
            JSONObject reddit_info_json = new JSONObject(reddit_info_tokener);

            JSONObject data = reddit_info_json.getJSONObject("data");

            // default value of score
            String score = context.getString(R.string.vote_to_submit_song);
            String likes = "null";
            String name = "";

            JSONArray children_array = data.getJSONArray("children");

            // Song hasn't been submitted yet
            if (children_array.length() > 0) {
                JSONObject children = children_array.getJSONObject(0);

                JSONObject children_data = children.getJSONObject("data");
                score = children_data.getString("score");

                likes = children_data.getString("likes");
                name = children_data.getString("name");
            }

            radioepisode.Score = score;
            radioepisode.Likes = likes;
            radioepisode.Name = name;
        } else {
            radioepisode.Score = "?";
            radioepisode.Likes = "null";
            radioepisode.Name = "";
        }
    } catch (Exception ex) {
        // We fail to get the vote information...
        CustomExceptionHandler ceh = new CustomExceptionHandler(context);
        ceh.sendEmail(ex);

        ex.printStackTrace();
        // return error message??
        radioepisode.ErrorMessage = context.getString(R.string.error_GettingVoteInformation);
        //return radiosong;
    }

    return radioepisode;
}

From source file:org.everit.json.schema.IntegrationTest.java

private static JSONArray loadTests(final InputStream input) {
    return new JSONArray(new JSONTokener(input));
}