如何将json字符串中的多个记录插入到java中的google数据存储区中

时间:2016-02-09 09:00:11

标签: java google-app-engine google-cloud-datastore

每当我收到json字符串作为请求时,我都必须将其插入到数据存储区实体中。以下是读取json字符串并存储到实体中的示例代码。

    DatastoreService ds = DatastoreServiceFactory.getDatastoreService();
    Key abckey = KeyFactory.createKey("aaa","aaa1");
    Entity abcentity = new Entity(abckey);
    JSONArray abc;
    Iterator iter = abc.iterator();
    while (iter.hasNext()) {
       innerObj = (JSONObject) iter.next();
                abcentity.setProperty("id",Integer.parseInt(innerObj.get(                                                                    
                        "id").toString()));
                abcentity.setProperty("mid", Integer.parseInt(innerObj
                        .get("mid").toString()));
                abcentity.setProperty("status", 1);
                abcentity.setProperty("tid", touserid);
                ds.put(abcentity);

            }

只要有记录,它就会迭代json数组。但在谷歌管理控制台中,它只显示最后一条记录。这是将多个记录插入数据存储区的正确方法吗?如果没有,请给我一些解决方案。

1 个答案:

答案 0 :(得分:3)

这是因为你只创建了一次。

试试这个:

DatastoreService ds = DatastoreServiceFactory.getDatastoreService();
JSONArray abc;
Iterator iter = abc.iterator();
while (iter.hasNext()) {
   innerObj = (JSONObject) iter.next();
   // create
   Key abckey = KeyFactory.createKey("aaa",Long.parseLong(innerObj.get(                                                                    
                    "id").toString()));
   Entity abcentity = new Entity(abckey);

   // fill with data
   // ...
   // abcentity.setProperty ...
   //

   // save
   ds.put(abcentity);
}

Key是您实体的标识符,而不是名为id

的字段