当前位置: 首页 > 知识库问答 >
问题:

在Java中从JSON对象中提取值的问题

慎建本
2023-03-14

好吧,我在这里挣扎。我从php服务器(称为“result”)获得以下JSON格式的字符串(已编辑!我在末尾缺少一个花括号):

{“L1”:[{“用户名”:“用户1”,“化身”:“1”},{“用户名”:“用户2”,“化身”:“2”},{“用户名”:“用户3”,“化身”:“3”},“L2”:[{“用户名”:“用户4”,“化身”:“4”},{“用户名”:“用户5”,“化身”:“5”}]}

try {
                JSONObject jsonObject = new JSONObject(result);
                JSONArray jsonArray = new JSONArray(jsonObject.getJSONObject("L1"));
                ArrayList<Integer> arrList = new ArrayList<>();
                if (jsonArray != null) {
                    for (int i = 0; i < jsonArray.length(); i++) {
                        JSONObject json = jsonArray.getJSONObject(i);
                        arrList.add(json.getInt("Avatar"));
                        AvatarList = arrList;
                    }
                }
                String query_result = "SUCCESS";
                if (query_result.equals("FAILURE")) {

                } else {
                    setAvatars(AvatarList);
                }
            } catch (JSONException e) {
                Log.e("log_tag", "Error converting result "+e.toString());
            }
jsonObject.getJSONArray("L1") 

(编辑:我在最初的文章中犯了一个错误。JSON字符串中缺少了一个花括号。感谢那些发现这个问题的人)

共有1个答案

鲜于温书
2023-03-14

如果有人偶然发现这一点,这对我来说是有效的。我真的不明白为什么这个能奏效而我最初的方法不能...可能与JSONObjects vs JSONArrays vs字符串以及[、{、}和]有关。

            try {
                JSONObject jsonObject = new JSONObject(result);
                JSONArray jsonArray = new JSONArray(jsonObject.getString("L1"));
                ArrayList<Integer> arrList = new ArrayList<>();
                if (jsonArray != null) {
                    for (int i = 0; i < jsonArray.length(); i++) {
                        JSONObject json = jsonArray.getJSONObject(i);
                        arrList.add(json.getInt("Avatar"));
                        AvatarList = arrList;
                    }
                }
 类似资料:
  • 问题内容: 这是我要在这里实现的目标: 从数据库获取文件名和ID的列表 在网络路径上搜索这些文件 存储未找到的文件的任何ID 在第二个数据库中搜索该ID 在网络路径上搜索这些文件 列出所有在两个位置均未找到文件的ID。 我遇到的问题是尝试使用我收集的结果中的文件名。 运行代码时,会显示从数据库收集的原始JSON数据,但是当尝试仅列出文件名时,我什么也没得到(甚至没有错误) 关于如何解决此问题并以一

  • 下面是演示类 我有一个演示实例: 对于新的,我需要从Demo了解字段,因为我需要一种通用的方法来获得任何具有基本字段/简单字段的类的对象数组

  • 我得到错误:“com.google.gson.jsonSyntaxException:java.lang.IllegalStateException:Expected BEGIN_OBJECT但是BEGIN_ARRAY位于第1行column 283 path$.items.Promended[0].images” 我请求帮助从json对象提取数据。 我只需要删除类'images',并将'urls'

  • 我有一个名为AnimalsData的文件,它有一个由数组组成的对象。数组由一个对象和另一个数组组成。它看起来像这样: 我的HTML文件如下所示: 我正试图获取的值的类名对象从动画类数组。我一直在使用以下两个stackoverflow页面作为指南: 访问JSON数组中的对象和访问/处理(嵌套)对象、数组或JSON 我有另一个javascript文件,其中包含以下内容: 编辑我将for in循环中的"

  • 问题内容: 我想使用https://raw.github.com/currencybot/open-exchange- rates/master/latest.json 提供的货币数据 作为初始测试,我已经创建了它的简化版本作为内联对象: 我想要做的就是以某种方式使用例如“ EUR”作为条件查询/ grep /过滤json对象,并使其返回一个名为“ rate”的变量,其结果为“ 0.795767”

  • 我需要在PlayFramework中从Json创建object。 你们有什么建议吗? 谢谢!!