使用我的json解析器类获取错误

时间:2013-05-07 05:41:37

标签: php android html json web-services

我正在制作一个Android应用程序,我必须使用jsonparser类。 但它不断返回null json对象。

在asyktask的dobackground函数中,从mainActivity调用json解析器类还有一件事。

JSON ANSWER:

{"products":[

{"pid":"1","name":"sulman",

"price":"125.00","created_at":"2013-05-05 04:00:00",
"updated_at":"2013-05-07 07:21:28"}, 
"pid":"2",

"name":"faizan",

"price":"124.00",

"created_at":"2013-05-06 05:00:00",
"updated_at":"2013-05-08 04:28:04"}],"success":1}




This my json parser class
public class JSONParser {

    static InputStream is = null;
    static JSONObject jObj = null;
    static String json = "";

    // constructor
    public JSONParser() {

    }

    // function get json from url
    // by making HTTP POST or GET method
    public JSONObject makeHttpRequest(String url, String method,
            List<NameValuePair> params) {

        // Making HTTP request
        try {

            // check for request method
            if(method == "POST"){
                // request method is POST
                // defaultHttpClient
                DefaultHttpClient httpClient = new DefaultHttpClient();
                HttpPost httpPost = new HttpPost(url);
                httpPost.setEntity(new UrlEncodedFormEntity(params));

                HttpResponse httpResponse = httpClient.execute(httpPost);
                HttpEntity httpEntity = httpResponse.getEntity();
                is = httpEntity.getContent();

            }else if(method == "GET"){
                // request method is GET
                DefaultHttpClient httpClient = new DefaultHttpClient();
                String paramString = URLEncodedUtils.format(params, "utf-8");
                url += "?" + paramString;
                HttpGet httpGet = new HttpGet(url);

                HttpResponse httpResponse = httpClient.execute(httpGet);
                HttpEntity httpEntity = httpResponse.getEntity();
                is = httpEntity.getContent();
            }           

// catch the exception//
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        } catch (ClientProtocolException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
//bufferreader read the input stream//
        try {
            BufferedReader reader = new BufferedReader(new InputStreamReader(
                    is, "iso-8859-1"), 8);
            StringBuilder sb = new StringBuilder();
            String line = null;
            while ((line = reader.readLine()) != null) {
                sb.append(line + "\n");
            }
            is.close();
            json = sb.toString();
            json = "{json_parse" + "[" + json + "]" + "}";
        } catch (Exception e) {
            Log.e("Buffer Error", "Error converting result " + e.toString());
        }

        // try parse the string to a JSON object
        try {
            jObj = new JSONObject(json);
        } catch (JSONException e) {
            Log.e("JSON Parser", "Error parsing data " + e.toString());
        }

//返回一个空对象//             return jObj;

    }
}

1 个答案:

答案 0 :(得分:0)

你的json代码上的

额外}或需要在json代码上添加{它必须是这个

额外}

 {"products":[
    {"pid":"1","name":"sulman",
     "price":"125.00","created_at":"2013-05-05 04:00:00",
     "updated_at":"2013-05-07 07:21:28", 
     "pid":"2",
     "name":"faizan",
     "price":"124.00",
     "created_at":"2013-05-06 05:00:00",
     "updated_at":"2013-05-08 04:28:04"}],"success":1}

输出

  stdClass Object
 (
    [products] => Array
    (
        [0] => stdClass Object
            (
                [pid] => 2
                [name] => faizan
                [price] => 124.00
                [created_at] => 2013-05-06 05:00:00
                [updated_at] => 2013-05-08 04:28:04
            )

    )

    [success] => 1
 )

或需要添加{

 {"products":[
    {"pid":"1","name":"sulman",
     "price":"125.00","created_at":"2013-05-05 04:00:00",
     "updated_at":"2013-05-07 07:21:28"}, 
     {"pid":"2",
     "name":"faizan",
     "price":"124.00",
     "created_at":"2013-05-06 05:00:00",
     "updated_at":"2013-05-08 04:28:04"}],"success":1}

输出

 stdClass Object
(
    [products] => Array
    (
        [0] => stdClass Object
            (
                [pid] => 1
                [name] => sulman
                [price] => 125.00
                [created_at] => 2013-05-05 04:00:00
                [updated_at] => 2013-05-07 07:21:28
            )

        [1] => stdClass Object
            (
                [pid] => 2
                [name] => faizan
                [price] => 124.00
                [created_at] => 2013-05-06 05:00:00
                [updated_at] => 2013-05-08 04:28:04
            )

    )

    [success] => 1
 )