2016-03-01 3 views
-4

Это моя JSON-строка:Как читать строку json в java?

[ 
    { 
     "id": 1, 
     "ip": "192.168.0.22", 
     "folderName": "gpio1_pg3" 
    }, 
    { 
     "id": 2, 
     "ip": "192.168.0.22", 
     "folderName": "gpio2_pb16" 
    } 
] 

Я хочу итерацию о массиве, потому что я буду создавать специальный объект для каждого элемента массива.

Вот как я получаю строку json с http-url.

BufferedReader bufferedReader = 
     new BufferedReader(new InputStreamReader(inputStreams, Charset.forName("UTF-8"))); 

String jsonText = readAll(bufferedReader); 

Не могли бы вы привести пример того, как я могу получить массив всех json-элементов. Один массив-элемент должен содержать id, ip и имя_папки.

+1

Создать класс с полями ID, IP и folderName, используйте связывание джексона для привязки данных к списку пользовательских объектов. – Pragnani

+0

http://stackoverflow.com/questions/6697147/jso н-итерация-через-jsonarray – IceJOKER

ответ

3

Jackson или GSON являются популярными библиотеками для преобразования строк JSON в объекты или карты.

Джексон пример:

String json = "[{\"foo\": \"bar\"},{\"foo\": \"biz\"}]"; 
JsonFactory f = new JsonFactory(); 
JsonParser jp = f.createJsonParser(json); 
// advance stream to START_ARRAY first: 
jp.nextToken(); 
// and then each time, advance to opening START_OBJECT 
while (jp.nextToken() == JsonToken.START_OBJECT)) { 
    Foo foobar = mapper.readValue(jp, Foo.class); 
    // process 
    // after binding, stream points to closing END_OBJECT 
} 

public class Foo { 
    public String foo; 
} 
1

Try,

JSONArray array = new JSONArray(jsonStr); 

for(int i=0; i<array.length(); i++){ 
    JSONObject jsonObj = array.getJSONObject(i); 
    System.out.println(jsonObj.getString("id")); 
    System.out.println(jsonObj.getString("ip")); 
    System.out.println(jsonObj.getString("folderName")); 
} 

ИЛИ вы можете попытаться с помощью библиотеки JSON от Google (Google-gson)

JsonParser jsonParser = new JsonParser(); 
JsonElement element = jsonParser.parse(your json string); 
Смежные вопросы