2017-10-17 25 views
1

Je multiples requêtes à l'aide QuerySpec et donc des multiples ItemCollection:Création d'une grande réponse JSON de multiples QuerySpec AWS DynamoDB

  Table table4 = dynamoDB.getTable("MyTable"); 
      QuerySpec spec4 = new QuerySpec() 
        .withKeyConditionExpression("id = :v_id") 
        .withValueMap(new ValueMap() 
        .withString(":v_id", SAFETY_CHAPTERS_UUIDS.get(i))); 
      ItemCollection<QueryOutcome> items4 = table4.query(spec4); 
      Iterator<Item> iterator4 = items4.iterator(); 
      Item itemsQuizzChapters = null; 

Je suis en essayant de trouver un moyen de construire une grande réponse JSON de ces 4 requêtes. Comment puis-je ajouter itemCollection à un objet ou à un objet JSON pour que je puisse créer un gros objet avec tout cela?

Répondre

0

Voici l'exemple de code pour interroger deux tables différentes Movies & post et retourner une liste de JSONObject (à savoir org.json.JSONObject).

La classe d'élément a un toJSON() pour renvoyer les données de l'élément en tant que chaîne Json. La méthode toJSON() peut être utilisée pour stocker les données de l'article en tant que List<String> ou List<JSONObject>.

Dans l'exemple de code ci-dessous, je renvoie List<JSONObject>.

Code de l'échantillon: -

List<JSONObject> resultJson = new ArrayList<>(); 
DynamoDB dynamoDB = new DynamoDB(dynamoDBClient); 

Table tableMovies = dynamoDB.getTable("Movies"); 
QuerySpec querySpecMovies = new QuerySpec(); 

querySpecMovies.withKeyConditionExpression("yearkey = :yearval") 
     .withValueMap(new ValueMap().withNumber(":yearval", 2014)); 

IteratorSupport<Item, QueryOutcome> iterator = tableMovies.query(querySpecMovies).iterator(); 

while (iterator.hasNext()) { 
    Item movieItem = iterator.next(); 
    System.out.println("Movie data ====================>" + movieItem.toJSONPretty());      
    resultJson.add(new JSONObject(movieItem.toJSON())); 
} 

Table tablePosts = dynamoDB.getTable("post"); 
QuerySpec querySpecPosts = new QuerySpec(); 

querySpecPosts.withKeyConditionExpression("postId = :postIdval") 
     .withValueMap(new ValueMap().withString(":postIdval", "3")); 

iterator = tablePosts.query(querySpecPosts).iterator(); 

while (iterator.hasNext()) { 
    Item postItem = iterator.next(); 
    System.out.println("Post data ====================>" + postItem.toJSONPretty());       
    resultJson.add(new JSONObject(postItem.toJSON())); 
} 

return resultJson; 

sortie: -

[{ 
    "country": ["IN", "UK", "US"], 
    "Description": "Delete and set", 
    "yearkey": 2014, 
    "total_val": 0, 
    "title": "The Big New Movie 2", 
    "total_new_val": 2 
}, { 
    "postId": "3", 
    "text": "Hello World", 
    "tags": ["A", "C"] 
}] 
1
//import aws-java-sdk-bundle-1.11.85.jar, json-simple-1.1.jar and jackson-all-1.9.9.jar 
public JSONObject getItemDynamoDB(String tableName, String primaryKey,String primaryKeyValue) { 
     Table index = dynamoDB.getTable(tableName); 
     QuerySpec querySpec = new QuerySpec().withKeyConditionExpression("#primaryKey = :value1") 
     .withNameMap(new NameMap().with("#primaryKey", primaryKey)) 
     .withValueMap(new ValueMap().withString(":value1", primaryKeyValue)); 
     ItemCollection<QueryOutcome> items = index.query(querySpec); 
     Iterator<Item> itemIterator = items.iterator(); 
     JSONObject jsonObject = null; 
     try { 
     Object obj = jsonParser.parse(itemIterator.next().toJSONPretty()); 
     jsonObject = (JSONObject) obj; 

    } catch (ParseException e) { 
     e.printStackTrace(); 
    } 
     return jsonObject; 
} 
//call the function multiple time to get big JSON 

public JSONArray concatenateMultipleItem(){ 
    JSONArray jsonArray = new JSONArray() ; 
    jsonArray.add(getItemDynamoDB("TableName", "primaryKey", "1")); 
    jsonArray.add(getItemDynamoDB("TableName2", "primaryKey2", "2")); 
    System.out.println(jsonArray); 
    return jsonArray; 
} 

reference