【问题标题】:java/JSON not showing needed value from parsing JSONjava/JSON 未显示解析 JSON 所需的值
【发布时间】:2020-03-18 14:48:11
【问题描述】:

大家好,我正在尝试从 JSON 字符串中获取所需的信息。

这就是我的 JSON 的样子:

{
  "xmlns:jp": "http://jazz.net/xmlns/prod/jazz/process/1.0/",
  "childNodes": [{
    "childNodes": [{
        "childNodes": ["https://zzzz.zzzz.zxzzxzxz:9443/qm/process/project-areas/_rutR33fwEee_eeo4ry7Vg/members/bob"],
                "tagName": "jp06:url"
        }, {
                "childNodes": ["https://zzzz.zzzz.zxzzxzxz:9443/jts/users/bob"],
                "tagName": "jp06:user-url"
        }, {...etc.....

这是我的java代码:

JSONObject jsonObject = JSONML.toJSONObject(theReturnedResult);
JSONArray jsonArray1 = jsonObject.getJSONArray("childNodes");
JSONObject device = jsonArray1.getJSONObject(0);
JSONArray vendors = device.getJSONArray("childNodes");
List<String> result = new ArrayList<>();

vendors.forEach(o -> {
    if (o instanceof JSONObject) {
        JSONObject crt = (JSONObject) o;
        String blah = crt.getString("tagName");
        System.out.println(crt.getString("tagName"));

        if (blah.equals("jp06:role-assignments-url")) {
            String blah1 = crt.getString("tagName");
            mapHash.put(owner, crt.getString("childNodes"));
        } else if (crt.has("ns6:owner")) {
            //See who's the owner of this TSR
            owner = crt.getString("childNodes");
        }
    }
});

String blah1 = crt.getString("tagName"); 返回第二个 tagName 但是当它进入 if/than 时我似乎找不到因为它告诉我 JSONObject["childNodes"] 不是字符串。

我正在尝试获取分配给 childNodes 的 URL 值。所以我不确定第一个 String blah = crt.getString("tagName") 是如何工作的,但是当我在 if/else 语句中尝试另一个时,它不会返回 url - 只有下面的错误?

我正在尝试获取值 "https://zzzz.zzzz.zxzzxzxz:9443/qm/process/project-areas/_rutR33fwEee_eeo4ry7Vg/members/bob

帮助会很棒!

【问题讨论】:

  • 我没有看到属性 childNodes 是一个字符串。只有数组
  • 第一个数组 = childNodes。第二个数组 = childNodes 第三个数组 = childNodes 然后获取 URL?

标签: java json parsing


【解决方案1】:

错误是正确的,不是吗? childNodes 不是 String 而是一个包含单个字符串的数组。所以应该是:

mapHash.put(owner, crt.getJSONArray("childNodes").getString(0));

【讨论】:

  • 这会产生一个 null
  • 啊,我收回了。它现在似乎工作了 :) 谢谢 Neeraj!
  • 好吧,我收回了。从 .getString(0) 每次循环以来,它似乎都给了我相同的值,因为它每次都是 0。有没有一种方法可以得到一个索引号而不必定义一个?
  • 那是因为您在哈希图中使用了相同的键“所有者”。每次循环时,哈希图中的最后一个 'childNodes' 值都会被最新值替换。您应该为地图使用适当的键来获取所有必需的值。
  • 每次似乎仍然有相同的网址。我将 URL 放在第一个参数中,将名称放在第二个参数中。每个人的 URL 都是唯一的。
猜你喜欢
  • 2022-11-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-05-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多