单个数组的JSON解析和数组名称

时间:2019-02-05 02:54:15

标签: android json

我需要在注册时显示响应,以下是我的JSON响应。 我应该显示密码太短(至少5个字符)成一个字符串

 { errors: { password: [ "is too short (minimum is 5 characters)" ] } }

我还需要解析以下JSON数据的响应 因为签名已被使用

  

{错误:{签名:[“已经被使用”]}}

请告诉我如何从JSON数据中解析特定数据。 预先谢谢!!!

3 个答案:

答案 0 :(得分:1)

您可以使用以下方法解析数据。

 private String parseJsonData(String jsonResponse) {
        try {
            JSONObject jsonObject = new JSONObject(jsonResponse);
            JSONObject errorJsonObject = jsonObject.getJSONObject("errors");
            JSONArray jsonArray = null;
            //has method
            if (errorJsonObject.has("password")) {
                jsonArray = errorJsonObject.optJSONArray("password");
            } else if (errorJsonObject.has(" signature")) {
                jsonArray = errorJsonObject.optJSONArray("signature");
            }
            String errorMessage = jsonArray.getString(0);
            return errorMessage;
        } catch (JSONException e) {
            e.printStackTrace();
            return null;
        }
    }

您可以替换不需要的符号,例如以下代码:

errorMessage.repalce("[","");
errorMessage.repalce("]","");
errorMessage.repalce("/"","");

答案 1 :(得分:0)

您可以按照以下步骤使用Google的Gson库:

  1. 在您的build.gradle(Module:app)文件中添加依赖项。

    dependencies { implementation 'com.google.code.gson:gson:2.8.5' }

    对于最新版本的gson库,请click here

  2. 要将JSON字符串解析为对象,请使用以下代码:

    Gson gson = new Gson(); // I'm fetching my session stored JSON string // You can fetch as per your requirement String jsonStr = session.getJsonStr(); MyObject myObject = (MyObject) gson.fromJson(jsonStr, MyObject.class);

如果需要将对象转换为JSON字符串,则可以使用以下代码:

 // I'm fetching my session stored Object here
 // You can fetch as per your requirement
 MyObject myObject = session.getMyObject();
 String jsonStr = gson.toJson(myObject);

确保您设计的对象适合JSON字符串以匹配数据类型。如果不确定JSON中的数据类型,则可以使用this site或任何解析并查看网站来查看它们。

希望有帮助!

答案 2 :(得分:-1)

只需尝试一下

          try {
                String tost = null;
                JSONObject object = new JSONObject(json);
                JSONObject errorObject = object.getJSONObject("errors");
                    if (errorObject.has("password")){
                        tost = "password "+errorObject.getJSONArray("password").get(0).toString();
                    } else if (errorObject.has("signature")){
                        tost = "signature "+errorObject.getJSONArray("signature").get(0).toString();
                    }
                    Toast.makeText(MainActivity.this, tost, Toast.LENGTH_SHORT).show();
                }catch (Exception e){
                    e.printStackTrace();
                }