簡體   English   中英

轉換情況下如何解析JSON數據

[英]How to parse the JSON data when it is switch case

我是Android開發的新手,我想解析JSON數據,我想通過在JSON數據下面發布此內容來獲得服務器的響應

// login JSON
mtjson={
        "action":"login",
        "data"  :{
                "email":"ajit@globemoving.net",
                "password":"ajit@globemoving.net",
                "mobile":"9845031333"


            }
    }

// retrieve enquiry list JSON
mtjson={
        "action":"eq-list",
        "data"  :{
                "vid":"108"
            }
    }

// retrieve enquiry details JSON
mtjson={
        "action":"eq-details",
        "data"  :{
                "vid":"108",                    // vendor ID
                "eqid":"eq72873",                   // enquiry ID
                "state":"new"                   // state = new,quoted
            }
    }


// submit new bid for enquiry JSON
mtjson={
        "action":"bid",
        "data"  :{
                "vid":"108",                    // vendor ID
                "eqid":"eq72873",                   // enquiry ID
                "bid_amount":"5000",
                "mobile": "9876543623",
                "note":"dkjhdah"                
            }
    }

因此,請使用Httpurlconnection方法幫助代碼。 因為我正在使用新的android studio apche.org,所以已棄用。

主要活動

protected Void doInBackground(Void... arg0) {
            // Creating service handler class instance
            ServiceHandler webreq = new ServiceHandler();
            HashMap<String, String> params = new HashMap<>();


        JSONObject j1=new JSONObject();
        JSONObject j2=new JSONObject();

        try { j2.put("vid", "108");
            String e = j2.toString();
            j1.put("action", "eq-list");
            j1.put("data", e); }
        catch (JSONException e) {   e.printStackTrace(); }
       // String params = j1.toString();
       // Log.d("output", String.valueOf(j2));
        // Making a request to url and getting response
        String jsonStr = webreq.makeWebServiceCall(url, ServiceHandler.POST, params);

        Log.d("Response: ", "> " + jsonStr);

        studentList = ParseJSON(jsonStr);

        return null;`

服務處理者

public class ServiceHandler {

static String response = null;
public final static int GET = 1;
public final static int POST = 2;

//Constructor with no parameter
public ServiceHandler() {

}

/**
 * Making web service call
 *
 * @url - url to make request
 * @requestmethod - http request method
 */
public String makeWebServiceCall(String url, int requestmethod) {
    return this.makeWebServiceCall(url, requestmethod, null);
}

/**
 * Making service call
 *
 * @url - url to make request
 * @requestmethod - http request method
 * @params - http request params
 */
public String makeWebServiceCall(String urladdress, int requestmethod,
                                String params) {
    URL url;
    String response = "";
    try {
        url = new URL(urladdress);

        DataInputStream input;

        HttpURLConnection conn = (HttpURLConnection) url.openConnection();
        conn.setReadTimeout(15000);
        conn.setConnectTimeout(15000);
        conn.setDoInput(true);
        conn.setDoOutput(true);





        if (requestmethod == POST) {
            conn.setRequestMethod("POST");



        } else if (requestmethod == GET) {
            conn.setRequestMethod("GET");
        }


        if (params != null) {

            OutputStream os = conn.getOutputStream();
            BufferedWriter writer = new BufferedWriter(
                    new OutputStreamWriter(os, "UTF-8"));

            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"));
            }

            writer.write(result.toString());

            writer.flush();
            writer.close();
            os.close();
        }

        int responseCode = conn.getResponseCode();

        if (responseCode == HttpsURLConnection.HTTP_OK) {
            String line;
            BufferedReader br = new BufferedReader(new InputStreamReader(conn.getInputStream()));
            while ((line = br.readLine()) != null) {
                response += line;
            }
        } else {
            response = "";
        }
    } catch (Exception e) {
        e.printStackTrace();
    }

    return response;
}

}

如果可以的話,我真的應該使用網絡庫來簡化網絡請求的發送,並將響應解析為模型中的對象。

看一下:

如果您願意,我可以提供更多示例,但是上面鏈接的文檔已經足夠了。

干杯!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM