2016-02-12 5 views
1

Я пытаюсь получить значение определенного атрибута в файле JSON, но вместо этого получаю содержимое строки из массива.Получение определенного значения внутри массива JSON (Java)

Например вот мой файл в формате JSON:

{ 
    "head": { 
    "vars": [ "type1" , "pred" , "type2" ] 
    } , 
    "results": { 
    "bindings": [ 
     { 
     "type1": { "type": "Collection" } , 
     "type2": { "type": "has" } , 
     "type3": { "type": "contributor" } 
     } , 
     { 
     "type1": { "type": "Collection2" } , 
     "type2": { "type": "has2" } , 
     "type3": { "type": "contributor2" } 
     } 

] 
} 
} 

Я хочу, чтобы получить только значение атрибута «type3» Но мой следующий код получает меня все из них.

JSONObject obj = new JSONObject(json);  
JSONObject results = obj.getJSONObject("results"); 
JSONArray bindings = results.getJSONArray("bindings");  

for (int i=0; i<bindings.length(); i++) 
{ 
JSONObject x = bindings.getJSONObject(i);     
x.getJSONObject("type3"); 
} 

Я пробовал несколько подходов, но, похоже, я делаю это неправильно.

+0

Почему вы выполняете итерацию на json, который является единственным объектом, вы не должны итерации по привязкам под результатом, например .. for (int i = 0; i

+0

Я попытался с (int i = 0; i ichmode

+1

Я думаю, здесь вы получаете значение типа3 как «{« type »:« contributor2 »}», и это правильно, что еще вы хотите get? –

ответ

2

Я только хочу, чтобы получить это: { "типа": "вкладчик"}

Тогда получить это значение (примерно) как так

bindings.getJSONObject(0).getJSONObject("type3") 
2

вы можете использовать JsonPath.read чтобы получить все значения Type3 в виде списка.

Значение списка = JsonPath.read (привязки, "..type3");

Смежные вопросы