在 PlayN 中,如何使用存储接口来保存数据



我正在寻找一个代码示例来演示Storage接口的实际实际用法。我对HTML5实现特别感兴趣。我刚刚开始研究我自己的概念验证,所以如果在此之前没有更好的答案,我会发布它。

存储接口在此Google演示文稿中介绍:

  • http://playn-2011.appspot.com/
下面是

一些代码,演示了如何将存储接口与 PlayN 的 JSON 接口一起使用:

private void loadStoredData() {
    // storage parameters
    String storageKey = "jsonData";
    Json.Object jsonData = PlayN.json().createObject();  
    // to reset storage, uncomment this line
    //PlayN.storage().removeItem(storageKey);
    // attempt to load stored data
    String jsonString = PlayN.storage().getItem(storageKey);
    // if not loaded, create stored data
    if ( jsonString == null ) {
        DemoApi.log("stored data not found");
        jsonData.put("firstWrite", new Date().toString());
    // else display data
    } else {
        jsonData = PlayN.json().parse(jsonString);
        DemoApi.log("stored data loaded");
        DemoApi.log("data first written at " + jsonData.getString("firstWrite"));
        DemoApi.log("data last read at " + jsonData.getString("lastRead"));
        DemoApi.log("data last written at " + jsonData.getString("lastWrite"));
    }
    // update last read
    jsonData.put("lastRead", new Date().toString());
    // write data (this works in Java -- not in HTML)
    // see https://stackoverflow.com/q/10425877/1093087
    /*
    Json.Writer jsonWriter = PlayN.json().newWriter();
    jsonWriter.object(jsonData).done();
    jsonString = jsonWriter.write();
    */
    // alternative write routine
    Json.Writer jsonWriter = PlayN.json().newWriter();
    jsonWriter.object();
    for ( String key : jsonData.keys() ) {
        jsonWriter.value(key, jsonData.getString(key));
    }
    jsonWriter.end();
    jsonString = jsonWriter.write();
    // store data as json
    PlayN.storage().setItem(storageKey, jsonString);
    // confirm
    if ( PlayN.storage().isPersisted() ) {
        DemoApi.log("data successfully persisted");
    } else {
        DemoApi.log("failed to persist data");
    }
}

Json.Writer有一个小问题,似乎有点错误,我在这里记录了这个问题:在 HTML 版本的 PlayN 中,为什么以下 JSON 处理代码会引发异常?

最新更新