我需要在注册时显示响应,以下是我的JSON响应。 我应该显示密码太短(至少5个字符)成一个字符串
{ errors: { password: [ "is too short (minimum is 5 characters)" ] } }
我还需要解析以下JSON数据的响应 因为签名已被使用
{错误:{签名:[“已经被使用”]}}
请告诉我如何从JSON数据中解析特定数据。 预先谢谢!!!
答案 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库:
在您的build.gradle(Module:app)
文件中添加依赖项。
dependencies {
implementation 'com.google.code.gson:gson:2.8.5'
}
对于最新版本的gson库,请click here
要将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();
}