需要帮助格式化 JSON 数组

Need help formatting a JSON array

我的网络服务有这个数组:{"update":true,"msg":"Logged in Bro","role":"admin"}

现在,我需要在 Android 中使用它来解决我的应用程序无法登录的问题。所以我在这里需要的是一种将这些数据格式化为名称值对或单个变量的方法,以便我可以使用它们。

我目前正在使用它,但它会强制关闭我的应用程序:

try {

            JSONObject jsonRootObject = new JSONObject(result);

            //Get the instance of JSONArray that contains JSONObjects
            JSONArray jsonArray = jsonRootObject.optJSONArray("");

            //Iterate the jsonArray and print the info of JSONObjects
            for(int i=0; i < jsonArray.length(); i++){
                JSONObject jsonObject = jsonArray.getJSONObject(i);

                update = jsonObject.optString(jsonObject.optString("update").toString());
                message = jsonObject.optString("msg").toString();
                role = jsonObject.optString(jsonObject.optString("role").toString());


            }

        } catch (JSONException e) {e.printStackTrace();}

要解析您提供的 JSON,您需要这样的东西:

   JSONObject jsonObject = new JSONObject(jsonString);

   update = jsonObject.optBoolean("update");
   message = jsonObject.optString("msg");
   role = jsonObject.optString("role");

我假设 result 包含您的 JSON 作为 String:

{"update":true,"msg":"Logged in Bro","role":"admin"}

因此,

JSONObject jsonRootObject = new JSONObject(result);

创建一个具有三个属性的 JSON 对象,updatemsgrole。您可以像这样访问它们:

boolean update = jsonRootObject.optBoolean("update");
String msg = jsonRootObject.optString("msg");
String role = jsonObject.optString("role");

您的代码在 jsonArray.length() 上崩溃,因为 jsonArray == nulljsonRootObject.optJSONArray(""); returns null 因为没有包含键 "" 的数组你的对象。


optString("msg").toString();

本身就不合逻辑。 optString returns 或 Stringnull。如果 属性 msg 不存在,您的代码将崩溃。如果您希望出现 属性,请使用 getString 而不是 optString。一般来说,不要在 String 上调用 toString()


jsonObject.optString(jsonObject.optString("role").toString());

也说不通。您的对象中没有等于 属性 role.

值的键