2016-04-27 10 views
2

ich einen JSONObject Speicher auf DynamoDB folgend haben,Wie aktualisiere ich JSONArray auf dynamodb? (JAVA SDK)

"info" : { 
     "nn": { 
      "nnn": [{ 
       "nnnn": "bb" 
      }] 
     }, 
     "ln": "zheng1", 
     "fn": "franky", 
     "sn": [{ 
      "aa": "zheng2" 
     }] 
    } 

Ich möchte info.sn von UpdateItemSpec aktualisieren

List<JSONObject> li= new ArrayList<JSONObject>(); 
    JSONObject j = new JSONObject(); 
    j.append("kk","kkkk"); 
    li.add(j); 

UpdateItemSpec updateItemSpec = new UpdateItemSpec() 
     .withPrimaryKey("Age", age, "Name", name) 
     .withExpressionSpec(new ExpressionSpecBuilder() 
        .addUpdate(ExpressionSpecBuilder.S("phone").set("0900000222")) 
        .addUpdate(ExpressionSpecBuilder.S("info.ln").set("zheng32")) 
        .addUpdate(ExpressionSpecBuilder.list_append("info.sn", li)) // ERRO 
        .withCondition(ExpressionSpecBuilder.N("weight").eq(82)) 
        .buildForUpdate()) 
     .withReturnValues(ReturnValue.UPDATED_NEW); 

Fehler list_append werden, kann ich nicht herausfinden, die Möglichkeit, JSONArray zu aktualisieren, kann jemand helfen?

Antwort

0

This answer sollte hilfreich sein. So könnte Ihr Update Artikel spec aussehen wie folgt

UpdateItemSpec updateItemSpec = new UpdateItemSpec() 
      .withPrimaryKey("Age", age, "Name", name) 
      .withNameMap(new NameMap().with("#P", "info.sn")) 
      .withValueMap(new ValueMap() 
        .withList(":val", li) //list of map 
        .withList(":empty_list", new ArrayList<>())) 
      .withUpdateExpression("SET #P = list_append(if_not_exists(#P, :empty_list), :val)"); 

Ich versuchte ExpressionSpecBuilder zunächst verwenden, aber ich nicht zu

Verwandte Themen