2011-10-06 4 views
1

J'essaye de désérialiser la chaîne suivante, je suis un peu nouveau à java et je ne peux pas obtenir cela pour travailler pour la vie de moi ... J'essaie seulement de décoder deux chaînes dans l'objet pour à présent. Mes cours JSON et Java ci-dessous. Je reçois la variable de résultat ok.Représentation Java de l'objet JSON

{ 
    "result": "true", 
    "recentlyMarkedTerritories": { 
     "0": { 
     "pk_activity": "471", 
     "fk_activity_type": "100", 
     "activity_content": "Hhhhh", 
     "fk_user": "2", 
     "activity_image": "2_QZe73f4t8s3R1317230457.jpg", 
     "created": "1317244857", 
     "activity_status": "1", 
     "activity_location_lat": "43.515283", 
     "activity_location_lon": "-79.880678", 
     "fk_walk": null, 
     "fk_event_location": "73", 
     "user_point": "0", 
     "public_image": "0", 
     "fk_event_location_lat": "43.515273", 
     "fk_event_location_lon": "-79.879989", 
     "profile_image": "2_y9JlkI3CZDml1312492743.jpg", 
     "user_gender": "1", 
     "user_dob": "236073600", 
     "user_nickname": "junoman", 
     "isFriend": "false", 
     "profile_image_thumb": "2_y9JlkI3CZDml1312492743_t.jpg", 
     "activity_image_thumb": "2_QZe73f4t8s3R1317230457_t.jpg", 
     "relationship_status_idx": "2", 
     "isBlocked": "false" 
     }, 
     "1": { 
     "pk_activity": "469", 
     "fk_activity_type": "100", 
     "activity_content": "Jsjsjs", 
     "fk_user": "1", 
     "activity_image": null, 
     "created": "1317244508", 
     "activity_status": "1", 
     "activity_location_lat": "43.515283", 
     "activity_location_lon": "-79.880678", 
     "fk_walk": null, 
     "fk_event_location": "73", 
     "user_point": "0", 
     "public_image": "0", 
     "fk_event_location_lat": "43.515273", 
     "fk_event_location_lon": "-79.879989", 
     "profile_image": "1_4Cpkofueqnrb1316895161.jpg", 
     "user_gender": "1", 
     "user_dob": "116841600", 
     "user_nickname": "JoePennington", 
     "isFriend": "false", 
     "profile_image_thumb": "1_4Cpkofueqnrb1316895161_t.jpg", 
     "activity_image_thumb": null, 
     "relationship_status_idx": "1", 
     "isBlocked": "false" 
     }, 
     ..... 
    } 
} 

Et ma classe java ci-dessous

RecentActivity infoList = null; 
Gson gson = new Gson(); 
infoList = gson.fromJson(JSONString, RecentActivity.class); 

public class RecentActivity { 
    String result; 
    recentlyMarkedTerritories recentlyMarkedTerritories = null; 

    public RecentActivity() { 

    } 

    public class recentlyMarkedTerritories { 
     public Set<recentlyMarkedTerritories> pk_activity = new HashSet<recentlyMarkedTerritories>() ; 

     public recentlyMarkedTerritories() { } 
    } 
} 

S'il vous plaît pardonnez mon manque de description, mais je suis sûr que le code aide. Le JSON est déjà utilisé dans d'autres applications si aucune modification n'est pas une option .. :(

Merci!

+0

Comment tentez-vous de le désérialiser? C'est le code qui serait utile. –

+0

modifié le message :) –

+0

C'est un JSON valide pour sûr, je suppose. –

Répondre

1

Voici quelques bons tutoriels, pour JSON qui vous aider.

GSON

JSON

JSON Example with source code

U PDATED

Essayez comme ça,

try { 
      JSONObject object = new JSONObject(jsonString); 
      JSONObject myObject = object.getJSONObject("recentlyMarkedTerritories"); 

      for (int i = 0; i < object.length(); i++) { 
       JSONObject myObject2 = myObject.getJSONObject(Integer.toString(i)); 
       System.out.println(myObject2.toString(2)); 
      } 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
+0

J'ai regardé tous ces derniers et je ne peux pas trouver quelque chose qui explique comment nommer ou itérer à travers des objets avec des noms numériques comme dans le json ci-dessus .. Presque semble pas réalisable en java? –

+0

Est-ce que je dois littéralement déclarer chaque classe pour "0", "1", "2", "3" ....? –

+0

Est-ce votre chaîne JSON complète ...? –

0

Je ne suis pas sûr du code gson à écrire, mais la structure de votre JSON ressemble plus à la représentation java suivante (bien que vous voudrez peut-être à la place booléens et ints des champs String):

public class RecentActivity { 
    String result; 
    Map<String,RecentlyMarkedTerritory> recentlyMarkedTerritories = null; 
} 

public class RecentlyMarkedTerritory { 
    String pk_activity; 
    // other fields 
} 
+0

Hmmmm cela ne fonctionne pas tout à fait, mais peut-être que vous pouvez expliquer ou faire allusion à cela .. Que signifie exactement le < > et comment ça s'appelle? Je peux trouver assez d'informations pour comprendre avec les bons termes :) –

+0

@Daniel les < > utilisent ce qu'on appelle 'Generics' et ici, ils signifient que la carte est une carte des chaînes de caractères des objets RecentlyMarkedTerritory. Les cordes seraient "0", "1", etc. –

+0

Merci pour votre aide et votre perspicacité! –

Questions connexes