繁体   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