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

标签 java android arrays json get-request

我正在开发一个 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"     
         }
      ]
   }]

这是我用来发出请求的类

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 对象中无效。

关于java - Android 在从服务器接收时读取 JsonArray 中的不同数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39817718/

相关文章:

java - 如何计算起始值和结束值之间存在的元素?

c# - 抽象类中 'this'的类型与重载方法解析顺序困惑

android - 在android中使用sqlite的优势

php - Laravel 5 android 聊天与推送通知像 Whatsapp

c++ - 具有自定义索引的数组

arrays - pyspark : How we select the dataframe which takes the highest values ​by Matricule?

java - 远程 JVM 机器人调用

java - Spring Boot 2.2.4 - 禁用安全性

带有动态 Where 子句的 Android rawquery

arrays - 使用 Typescript 创建动态对象来重新组织 API 响应