Comment itérer Tableau JSON et l'extrait de chaque Objet JSON en utilisant GSON?

Ci-dessous est ma Chaîne JSON qui je suis de retour en appelant à partir d'un service de l'API. J'ai raccourcir le bas en ayant seulement trois reportRecords pour la compréhension but. En général, il pourrait avoir ~500 reportRecords

{
   "aggRecords": {
      "reportRecords": [
         {
            "min": 0,
            "max": 12,
            "avg": 0.3699187,
            "count": 246,
            "sumSq": 571,
            "stddev": 1.4779372,
            "median": 0,
            "percentileMap": {
               "95": 4
            },
            "metricName": "TransactionDuration",
            "dimensions": {
               "env": "dev",
               "pool": "titan",
               "Name": "PostProcessing",
               "Type": "PostProcessing"
            },
            "value": 91
         },
         {
            "min": 0,
            "max": 23,
            "avg": 2.3991289E-4,
            "count": 1463031,
            "sumSq": 3071,
            "stddev": 0.045814946,
            "median": 0,
            "percentileMap": {
               "95": 0
            },
            "metricName": "TransactionDuration",
            "dimensions": {
               "env": "dev",
               "pool": "titan",
               "Name": "ResourceContext",
               "Type": "ResourceContext"
            },
            "value": 351
         },
         {
            "min": 0,
            "max": 1209,
            "avg": 1.9203402,
            "count": 7344636,
            "sumSq": 71832774,
            "stddev": 2.4683187,
            "median": 2,
            "percentileMap": {
               "95": 4
            },
            "metricName": "TransactionDuration",
            "dimensions": {
               "env": "dev",
               "pool": "titan",
               "Name": "Client::Sync",
               "Type": "Client::Sync"
            },
            "value": 14104200
         }
      ]
   },
   "minRecordsMap": {}
}

Maintenant à Partir du dessus de réponse JSON, j'ai besoin d'extraire reportRecords dont Name est Client::Sync. Sens, j'ai besoin de l'extrait ci-dessous reportRecords à partir du dessus de réponse JSON seulement.

         {
            "min": 0,
            "max": 1209,
            "avg": 1.9203402,
            "count": 7344636,
            "sumSq": 71832774,
            "stddev": 2.4683187,
            "median": 2,
            "percentileMap": {
               "95": 4
            },
            "metricName": "TransactionDuration",
            "dimensions": {
               "env": "dev",
               "pool": "titan",
               "Name": "Client::Sync",
               "Type": "Client::Sync"
            },
            "value": 14104200
         }

Et maintenant, j'ai besoin d'analyser ci-dessus reportRecords pour Client::Sync au-dessous de l'objet

public class DataMetrics {
private String pool;
private String name;
private String type;
private String env;
private String metricName;
private String percentile;
private String median;
private String stdDev;
private String sumSq;
private String count;
private String avg;
private String max;
private String min;
//getters and setters here
}

Ci-dessus variable, des cartes comme celle-ci,

pool is titan
name is Client::Sync 
type is Client::Sync
env is dev
metricNname is TransactionDuration
95th  percentile is 4
median is 2
stdDev is 2.4683187 
sumSq is 71832774 
count is 7344636 
avg is 1.9203402
max is 1209
min is 0

Je suis à l'aide de GSON bibliothèque ici et ci-dessous est ce que j'ai essayé jusqu'à présent -

private static RestTemplate restTemplate = new RestTemplate();
public static void main(String[] args) {
String jsonLine = restTemplate.getForObject("some_url", String.class);
System.out.println(jsonLine); //here jsonLine will give me above big JSON String
JsonElement jelement = new JsonParser().parse(jsonLine);
JsonObject  jobject = jelement.getAsJsonObject();
jobject = jobject.getAsJsonObject("aggRecords");
JsonArray jarray = jobject.getAsJsonArray("reportRecords");
//now how do I iterate JsonArray and get each JSON object
//and then check "name" property of each object, if "Client::Sync" found, read that object for all properties
//and set it using setters.
}

Maintenant, je ne suis pas en mesure de comprendre comment dois-je effectuer une itération JsonArray et de l'extrait de chaque objet JSON à partir d'elle?

  • Je suis en train de travailler avec GSON et je suppose que l'exemple ci-dessus, ne pas utiliser de GSON.
  • désolé, mon erreur:/
InformationsquelleAutor john | 2014-06-17