2012-05-01 3 views
2

У меня есть ответ, как это:Читать массив JSON в JAVA

[ { "key": { "kind": "UserRecord", "id": 0, "name": "1" }, "firstName": "1", "lastName": "1", "homeLat": 0.0, "homeLon": 0.0, "workLat": 0.0, "workLon": 0.0, "currentLat": 10.0, "currentLon": 10.82, "timestamp": 1335735046606, "score": 0, "isStarred": false, "distance": 0.0 }, { "key": { "kind": "UserRecord", "id": 0, "name": "32423542324234324" }, "firstName": "Simone", "lastName": "Boscolo Berto", "homeLat": 0.0, "homeLon": 0.0, "workLat": 0.0, "workLon": 0.0, "currentLat": 55.786444, "currentLon": 12.515867, "timestamp": 1335884083696, "score": 0, "isStarred": false, "distance": 0.0 } ] 

и метод, от каждого JSONObject дать мне мой объект

private User getUserFromJson(JSONObject jsonUser) 

Как я могу перебирать в этом списке JSONObjects? следует ли использовать JSONArrayobject?

ответ

0

Что-то вроде этого:

final String incomingJSON ; 
final JSONArray objArray = new JSONArray(incomingJSON); 
for(int i = 0; i < objArray.length(); i++) { 
    final JSONObject obj = objArray.getJSONObject(i); 
    final User user = getUserFromJson(obj); 
} 
+0

это дает проблемы с созданием JSONArray ... –

+0

Что точная проблема дает, пожалуйста, быть конкретными. – Perception

+0

Значение [email protected] типа java.lang.String не может быть преобразовано в JSONArray –

0

Вы используете API Gson? При этом вы можете получить итератор из объекта JsonArray.

Iterator<JsonElement> iterator() 
      Returns an iterator to navigate the elemetns of the array. 
1

Это может быть легко с Gson или Джексоне

Gson например

Gson gson = new Gson(); 
User[] users = gson.fromJson(<json string>, User[].class); 

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

ObjectMapper mapper = new ObjectMapper(); 
Collection<User> users = 
    mapper.readValue(<json string>, `new TypeReference<Collection<User>>() {}); 

Образец -

package com.test; 

import com.google.gson.Gson; 

public class GSonExample { 
    public static void main(String[] args) { 
     String json = "{\"name\":\"Duke\",\"address\":\"Menlo Park\",\"dateOfBirth\":\"Feb 1, 2000 12:00:00 AM\"}"; 

     Gson gson = new Gson(); 
     User student = gson.fromJson(json, User.class); 

     System.out.println("student.getName()  = " + student.getName()); 
     System.out.println("student.getAddress()  = " + student.getAddress()); 
     System.out.println("student.getDateOfBirth() = " + student.getDateOfBirth()); 
    } 
} 

public class User { 
    private String name; 
    private String address; 
    private String dateOfBirth; 
    public String getName() { 
     return name; 
    } 
    public void setName(String name) { 
     this.name = name; 
    } 
    public String getAddress() { 
     return address; 
    } 
    public void setAddress(String address) { 
     this.address = address; 
    } 
    public String getDateOfBirth() { 
     return dateOfBirth; 
    } 
    public void setDateOfBirth(String dateOfBirth) { 
     this.dateOfBirth = dateOfBirth; 
    } 
} 

классам
<?xml version="1.0" encoding="UTF-8"?> 
<classpath> 
    <classpathentry kind="src" path="src"/> 
    <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/> 
    <classpathentry kind="lib" path="lib/gson-2.1.jar"/> 
    <classpathentry kind="output" path="bin"/> 
</classpath> 
+0

Я пытаюсь использовать метод Gson, потому что он кажется очень полезным, но я зацепил эту проблему: «Не удалось найти класс 'com.google.gson.Gson', ссылающийся на мой пакет. Btw, я включил библиотеку и скомпилировал ее, она дает эту проблему только время запуска –

+0

кажется удивительным, потому что если вы добавили в путь сборки, это не должно Вы можете проверить эту [thread] (http://stackoverflow.com/questions/4961336/i-am-getting-java-lang-classnotfoundexception-com-google-gson-gson-error-even) –

+0

I уже посмотрел в этом потоке, но не помогает, потому что у меня нет сервлета \ JSP –

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