java/JSON未显示解析JSON所需的值

java/JSON未显示解析JSON所需的值,java,json,parsing,Java,Json,Parsing,嘿,我只是想从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/membe

嘿,我只是想从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");
        }
    }
});
JSONObject-JSONObject=JSONML.toJSONObject(返回结果);
JSONArray jsonArray1=jsonObject.getJSONArray(“childNodes”);
JSONObject device=jsonArray1.getJSONObject(0);
JSONArray vendors=device.getJSONArray(“childNodes”);
列表结果=新建ArrayList();
供应商。forEach(o->{
if(o JSONObject的实例){
JSONObject crt=(JSONObject)o;
字符串blah=crt.getString(“标记名”);
System.out.println(crt.getString(“标记名”);
if(blah.equals(“jp06:角色分配url”)){
字符串blah1=crt.getString(“标记名”);
put(所有者,crt.getString(“childNodes”);
}否则,如果(crt.has(“ns6:所有者”)){
//看看谁是这个TSR的所有者
owner=crt.getString(“childNodes”);
}
}
});
字符串blah1=crt.getString(“标记名”)返回第二个标记名,但当它进入if/then时,我似乎找不到它,因为它告诉我JSONObject[“childNodes”]不是字符串。

我正在尝试获取分配给子节点的URL值。因此,我不确定第一个字符串blah=crt.getString(“标记名”)是如何工作的,但当我在if/else语句中尝试另一个字符串时,它不会返回url,只返回下面的错误

我正在尝试获取值


帮助会很好!

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

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

我看不到任何属性
childNodes
这是一个字符串。只有arrays1st array=childNodes.2nd array=childNodes.3rd array=childNodes然后获取URL?这会生成一个nullAh,我收回它。它现在看起来确实起作用了:)谢谢Neeraj!我收回它。它似乎给了我.getString(0)的每个循环相同的值因为每次都是0。有没有一种方法可以在不定义索引号的情况下获取索引号?这是因为您在hashmap中使用相同的键“owner”。每次循环时,hashmap中的最后一个“childNodes”值都会被最新的值替换。您应该为映射使用适当的键来获取所有必需的值。看起来仍然是h每次都使用相同的url。我将url放在第一个参数中,名称放在第二个参数中。每个人的url都是唯一的。