2011-11-22 113 views
2

我需要解決方案來添加JSON數組以存儲到Google應用數據存儲中,我認爲它可能會在Python中,但我對此並不熟悉,我只需要在Java中簡單實現代碼和JSON佈局將接收到的數據和Android Accelemeter存儲到數據存儲中。如果有人能幫助我,那將會很好。如何將JSON數組添加到Google App數據存儲中

回答

4

如果您不需要索引數據,只需將JSON數據作爲文本字符串存儲在數據存儲中,並標記爲未建立索引。如果您確實需要將其編入索引,則需要構建一個包含JSON數據的重要屬性的模型,並將值複製到您自己的範圍內。

+0

RESTeasy一直很適合將JSON映射到Java類。 Objectify對於將Java類映射到數據存儲很好。 –

+0

數據存儲StringProperty有500個字符的限制。對於更大的文件,TextProperty最高爲1 MB,您將需要一個blob。 – topless

1

請參閱here實現JSON < - >實體映射。

/** 
* Sets the properties of the specified entity by the specified json object. 
* 
* @param entity the specified entity 
* @param jsonObject the specified json object 
* @throws JSONException json exception 
*/ 
public static void setProperties(final Entity entity, 
           final JSONObject jsonObject) 
     throws JSONException { 
    @SuppressWarnings("unchecked") 
    final Iterator<String> keys = jsonObject.keys(); 
    while (keys.hasNext()) { 
     final String key = keys.next(); 
     final Object value = jsonObject.get(key); 

     if (!GAE_SUPPORTED_TYPES.contains(value.getClass()) 
      && !(value instanceof Blob)) { 
      throw new RuntimeException("Unsupported type[class=" + value. 
        getClass().getName() + "] in Latke GAE repository"); 
     } 

     if (value instanceof String) { 
      final String valueString = (String) value; 
      if (valueString.length() 
       > DataTypeUtils.MAX_STRING_PROPERTY_LENGTH) { 
       final Text text = new Text(valueString); 

       entity.setProperty(key, text); 
      } else { 
       entity.setProperty(key, value); 
      } 
     } else if (value instanceof Number 
        || value instanceof Date 
        || value instanceof Boolean 
        || GAE_SUPPORTED_TYPES.contains(value.getClass())) { 
      entity.setProperty(key, value); 
     } else if (value instanceof Blob) { 
      final Blob blob = (Blob) value; 
      entity.setProperty(key, 
           new com.google.appengine.api.datastore.Blob(
        blob.getBytes())); 
     } 
    } 
} 
相關問題