将来自 Objectify 的结果以人类可读的形式保存在数据存储中
Save result from Objectify in human readable form in datastore
我正在尝试创建一个事件日志(例如 ORMSLOG),它将事件以人类可读的形式保存在数据存储区中。
这样做应该会写入可读事件:
List<Device> devices = ofy().transactionless().load().type(Device.class).list();
ORMSLOG.log(ORMSLOG.GET_ALL_DEVICES, "Devices found: " + String.valueOf(devices));
ORMSLOG 是一个简单的 class。
public class ORMSLOG {
public final static String CREATE_DEVICE = "Create Device";
public final static String GET_ALL_DEVICES = "Get all Devices";
public static void log(final String event, final String data) {
ofy().save().entity(new Event(event, data)).now();
}
}
但是 Datastore 中保存的数据不可读,看起来像这样:
ORMSLOG data
我需要将对对象的引用转换为人类可读的文本。
您只是在记录对象的字符串表示形式,这是通过调用 toString
方法完成的。由于您没有覆盖 Device
class 中的 toString
方法,您将获得指向对象的指针。如果您将设备 class 中的 toString
方法重写为 return 您想要 return 的任何状态,您会看到更好的结果。大多数 IDE(例如 Eclipse)都有为您生成 toString
方法的选项。
我正在尝试创建一个事件日志(例如 ORMSLOG),它将事件以人类可读的形式保存在数据存储区中。
这样做应该会写入可读事件:
List<Device> devices = ofy().transactionless().load().type(Device.class).list();
ORMSLOG.log(ORMSLOG.GET_ALL_DEVICES, "Devices found: " + String.valueOf(devices));
ORMSLOG 是一个简单的 class。
public class ORMSLOG {
public final static String CREATE_DEVICE = "Create Device";
public final static String GET_ALL_DEVICES = "Get all Devices";
public static void log(final String event, final String data) {
ofy().save().entity(new Event(event, data)).now();
}
}
但是 Datastore 中保存的数据不可读,看起来像这样:
ORMSLOG data
我需要将对对象的引用转换为人类可读的文本。
您只是在记录对象的字符串表示形式,这是通过调用 toString
方法完成的。由于您没有覆盖 Device
class 中的 toString
方法,您将获得指向对象的指针。如果您将设备 class 中的 toString
方法重写为 return 您想要 return 的任何状态,您会看到更好的结果。大多数 IDE(例如 Eclipse)都有为您生成 toString
方法的选项。