Java 如何将JSON数组添加到Google应用程序数据存储中
我需要一个解决方案来添加一个JSON数组来存储到google app数据存储中,我认为这在Python中是可能的,但我不熟悉这一点,我只需要Java代码和JSON布局的简单实现来将从Android accelemeter接收到的数据存储到数据存储中。如果有人能帮助我,那就太好了。如果您不需要为数据编制索引,只需将JSON数据作为文本字符串存储在数据存储中,标记为“未编制索引”。如果确实需要对其进行索引,则需要构建一个包含JSON数据重要属性的模型,并将值复制到自己身上。有关JSON实体映射的实现,请参阅Java 如何将JSON数组添加到Google应用程序数据存储中,java,json,google-app-engine,Java,Json,Google App Engine,我需要一个解决方案来添加一个JSON数组来存储到google app数据存储中,我认为这在Python中是可能的,但我不熟悉这一点,我只需要Java代码和JSON布局的简单实现来将从Android accelemeter接收到的数据存储到数据存储中。如果有人能帮助我,那就太好了。如果您不需要为数据编制索引,只需将JSON数据作为文本字符串存储在数据存储中,标记为“未编制索引”。如果确实需要对其进行索引,则需要构建一个包含JSON数据重要属性的模型,并将值复制到自己身上。有关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()));
}
}
}
/**
*通过指定的json对象设置指定实体的属性。
*
*@param entity指定的实体
*@param jsonObject指定的json对象
*@抛出JSONException json异常
*/
公共静态void集合属性(最终实体,
最终JSONObject(JSONObject)
抛出JSONException{
@抑制警告(“未选中”)
final Iterator keys=jsonObject.keys();
while(keys.hasNext()){
最后一个字符串键=keys.next();
最终对象值=jsonObject.get(键);
如果(!GAE_SUPPORTED_TYPES.contains)(value.getClass())
&&!(Blob的值实例){
抛出新的RuntimeException(“不支持的类型[class=“+值”)。
Latke GAE存储库中的getClass().getName()+“];
}
if(字符串的值实例){
最终字符串值字符串=(字符串)值;
if(valueString.length()
>DataTypeUtils.MAX\u字符串\u属性\u长度){
最终文本文本=新文本(valueString);
entity.setProperty(键、文本);
}否则{
实体.setProperty(键、值);
}
}else if(值instanceof Number
||日期的值实例
||布尔值实例
||GAE\u支持的\u类型。包含(value.getClass()){
实体.setProperty(键、值);
}else if(Blob的值实例){
最终Blob Blob=(Blob)值;
entity.setProperty(键,
新建com.google.appengine.api.datastore.Blob(
getBytes());
}
}
}
RESTeasy在将JSON映射到Java类方面做得很好。Objectify非常适合将Java类映射到数据存储。数据存储StringProperty限制为500个字符。TextProperty最多为1 MB,对于较大的文件,您将需要一个blob。