java / JSON не показывает нужное значение при разборе JSON - PullRequest
0 голосов
/ 18 марта 2020

Привет всем, что я пытаюсь получить необходимую информацию из строки 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 code:

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"], а не строку.

Я пытаюсь получить значение URL, назначенное ChildNodes . Поэтому я не уверен, как работает первая строка String blah = crt.getString ("tagName"), но когда я пытаюсь использовать другую строку в операторе if / else, она не возвращает URL - только ошибка ниже?

Я пытаюсь получить значение "https://zzzz.zzzz.zxzzxzxz: 9443 / кв. М / процесс / проект-области / _rutR33fwEee_eeo4ry7Vg / members / bob .

Справка будет здорово!

1 Ответ

1 голос
/ 18 марта 2020

Ошибка верна, не так ли? childNodes - это не String, а массив с единственной строкой в ​​нем. Так и должно быть:

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