2012-11-13 3 views
2

je le JSON suivant:Gson désérialiser partie interne

{ 
   "LightObjectSet": { 
      "Objects": { 
         "Org": { 
            "State": "Unchanged", 
            "Guid": "00000000-0000-0000-0000-000000000000", 
            "Id": "39", 
            "Name": "Test org", 
            "ShortName": "Test" 
         } 
      } 
   } 
} 

Puis-je désérialiser seul objet Org (pas toutes la structure) en utilisant Gson?

+0

double possible de [Gson et se concentrer uniquement sur l'objet intérieur] (http://stackoverflow.com/questions/12825229/gson-and-only -concentrate-on-inner-object) – Collin

Répondre

0

Essayez ceci. Juste une note, la classe désérialisée Org ne suit pas les conventions de dénomination Java pour correspondre au JSON. Si vous voulez les suivre, vous devez annoter des champs avec @SerializedName

public class Q13363304 { 

    class Org { 

     String State; 
     String Guid; 
     int Id; 
     String Name; 
     String ShortName; 

     @Override 
     public String toString() { 
      return "Org [State=" + State + ", Guid=" + Guid + ", Id=" + Id 
        + ", Name=" + Name + ", ShortName=" + ShortName + "]"; 
     } 

    } 

    /** 
    * @param args 
    */ 
    public static void main(String[] args) { 
     String json = "{ \"LightObjectSet\": { \"Objects\": { \"Org\": { \"State\":\"Unchanged\", \"Guid\":\"00000000-0000-0000-0000-000000000000\", \"Id\":\"39\", \"Name\":\"Test org\", \"ShortName\":\"Test\" } } } }"; 

     JsonObject root = new JsonParser().parse(json).getAsJsonObject(); 
     JsonObject lightObjectSet = root.get("LightObjectSet").getAsJsonObject(); 
     JsonObject objects = lightObjectSet.get("Objects").getAsJsonObject(); 
     JsonElement org = objects.get("Org"); 

     Gson g = new Gson(); 

     Org o = g.fromJson(org, Org.class); 
     System.out.print(o); 

    } 

} 
Questions connexes