解析JSON响应对象

时间:2016-03-28 20:31:35

标签: java android json

我知道这个问题已被问过100次,但我无法解决以下问题

我有一个用于登录的Web服务,它使用看起来像这样的JSON格式字符串进行响应

{
    "success": 0,
    "error_message": "Username and/or password is invalid."
}
我知道

是一个JSON对象

我试图像这样检索对象

protected Boolean doInBackground(Void... params) {
    String TAG_PATH = "success";
    ArrayList<HashMap<String, String>> oslist = new ArrayList<HashMap<String, String>>();
    String AuthResult2 = "";

    //this is where you should write your authentication code
    // or call external service
    // following try-catch just simulates network access
try{
    JSONParser jParser = new JSONParser();


    // Add your data
    List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(2);
    nameValuePairs.add(new BasicNameValuePair("username", emailTextView.getText().toString()));
    nameValuePairs.add(new BasicNameValuePair("password", passwordTextView.getText().toString()));

    jParser.nameValuePairs = nameValuePairs;

    // Getting JSON from URL

    String url = "login.php";

    // JSONArray json = jParser.getJSONFromUrl(url);

    JSONObject json = jParser.getJSONFromUrl(url);


    for(int i = 0; i < json.length(); i++) {

        JSONObject c = json.getJSONObject(i);

        // Storing  JSON item in a Variable
        AuthResult2 = c.getString(TAG_PATH);
    }
} catch (JSONException e) {
        e.printStackTrace();
    }

    if (AuthResult2.equals("true")) {
        return true;
    }else{
        return false;
    }
}

你可以看到我改变了行

JSONArray json = jParser.getJSONFromUrl(url);

JSONObject json = jParser.getJSONFromUrl(url);

我知道我还必须删除for ...循环但是我在Android Studio中收到错误。

它说

  

必需的JSONObject找到JSONArray。

据我所知,我的代码很合理。

请帮助我继续我的生活

UPDATE 错误的副本

C:\Users\Alex\AndroidStudioProjects\CameraScan4\app\src\main\java\com\example\alex\camerascan4\LoginActivity.java
Error:(295, 53) error: incompatible types
required: JSONObject
found:    JSONArray
Error:(300, 34) error: method getJSONObject in class JSONObject cannot be applied to given types;
required: String
found: int
reason: actual argument int cannot be converted to String by method invocation conversion

更新

这是我的JSONParser,我完全忘记它依赖于此,并假设它是一个内置的东西。我觉得多么愚蠢。我看到了类型未命中匹配的原因,但是我现在可以找到一种方法来使用1个解析器类来返回数组或对象,具体取决于响应,甚至不确定是否可能。然后我考虑复制类,1用于数组响应,另一个用于对象。但必须有更好的方法

我想我可以把对象(如果那是它收到的东西)变成一个数组然后像往常一样传回来???

0 个答案:

没有答案