Android считывает разные данные в JSONArray при получении с сервера

#java #android #arrays #json #get-request

#java #Android #массивы #json #get-запрос

Вопрос:

Я работаю над API, и я испытываю странную вещь. Когда я делаю запрос API, из которого я получаю ответ JSON. В браузере я получаю следующий JSON:

 [  
   { 
      "SalesAgentPhone":"829698539",
      "DriverStatus":"CustomerRescheduled",
      "DriverStatusDescription":[  
         {  
            "Reason":"sfdfsdf",
            "Date":"2016-10-02",
            "SlotId":"1"
         }
      ]
   }]
  

Но я получаю другой ответ JSON на моем устройстве Android.

 [  
   { 
      "SalesAgentPhone":"829698539",
      "DriverStatus":"CustomerRescheduled",
      "DriverStatusDescription":[  
         {amp;quot;Reasonamp;quot;:amp;quot;sfdfsdfamp;quot;,amp;quot;Dateamp;quot;:amp;quot;2016-10-02amp;quot;,amp;quot;SlotIdamp;quot;:amp;quot;1amp;quot;     
         }
      ]
   }]
  

Это класс, который я использую для выполнения этого запроса

 public class NewPost extends AsyncTask<String, Integer, String> {
    private final Context context;
    private final Registerinterface inter;
    private int response_code = 0;
    private HashMap<String, String> postDataParams;
    private ProgressDialog prgDialog;

    public NewPost(Context c, Registerinterface inter, HashMap<String, String> postParamater) {
        context = c;
        this.inter = inter;
        this.postDataParams = postParamater;


    }


    @Override
    protected void onPreExecute() {
        super.onPreExecute();
        if (!new NetworkStatus(context).isNetworkAvailable()) {
            inter.Result("", Constants.No_Internet);
            this.cancel(true);
        } else {
            prgDialog = new ProgressDialog(new ContextThemeWrapper(context, android.R.style.Theme_DeviceDefault_Light_Dialog));
            prgDialog.setMessage("Loading...");
            prgDialog.show();
            prgDialog.setIndeterminate(false);
        }
    }

    @Override
    protected String doInBackground(String... param) {

        URL url;
        String response = "";
        try {
            url = new URL(param[0]);

            HttpURLConnection conn = (HttpURLConnection) url.openConnection();
            conn.setReadTimeout(15000);
            conn.setConnectTimeout(15000);
            conn.setRequestMethod("GET");
            conn.setDoInput(true);
            conn.setDoOutput(true);
            OutputStream os = conn.getOutputStream();
            BufferedWriter writer = new BufferedWriter(
                    new OutputStreamWriter(os, "UTF-8"));
            writer.write(getPostDataString(postDataParams));
            writer.flush();
            writer.close();
            os.close();
            int responseCode = conn.getResponseCode();
            if (responseCode == HttpsURLConnection.HTTP_OK) {
                String line;
                StringBuilder sb = new StringBuilder();
                BufferedReader br = new BufferedReader(new InputStreamReader(conn.getInputStream()));
                while ((line = br.readLine()) != null)
                    sb.append(line   "n");
                response = sb.toString();
                return response;
            } else {
                response = "";
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        return response;
    }

    @Override
    protected void onPostExecute(String result) {
        super.onPostExecute(result);

        prgDialog.dismiss();
        if (result == null || result.equals("null"))
            inter.Result("null", response_code);
        else
            inter.Result(result, response_code);
    }

    private String getPostDataString(HashMap<String, String> params) throws UnsupportedEncodingException {
        StringBuilder result = new StringBuilder();
        boolean first = true;
        for (Map.Entry<String, String> entry : params.entrySet()) {
            if (first)
                first = false;
            else
                result.append("amp;");

            result.append(URLEncoder.encode(entry.getKey(), "UTF-8"));
            result.append("=");
            result.append(URLEncoder.encode(entry.getValue(), "UTF-8"));
        }
        return result.toString();
    }
}
  

Я застрял на этой проблеме в течение нескольких часов, буду признателен за любую помощь.

Ответ №1:

Вы можете удалить их из своих данных JSON.

  JSON.parse(data.replace(/amp;quot;/g,'"'));
  

Возможно, вы захотите исправить свой сценарий записи JSON, потому что » недопустимо в объекте JSON.

Комментарии:

1. Но я получаю правильные данные, когда делаю запрос из браузера.

2. Но я не смог выполнить описанный выше метод.