Android 从服务器接收时读取 JsonArray 中的不同数据

Android reads different data in JsonArray on receiving from server

我正在研究 API,但我遇到了一件奇怪的事情。当我发出 API 请求时,我收到了 JSON 响应。在浏览器中,我收到以下 JSON:

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

但我在 Android 设备上收到不同的 JSON 响应。

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

这是我用来提出请求的class

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("&");

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

这个问题困扰我好几个小时了,如有任何帮助,我们将不胜感激。

您可以从 JSON 数据中删除。

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

尽管如此,您可能想要修复您的 JSON 编写脚本,因为 " 在 JSON 对象中无效。