0

以下代码摘录从 Java 地图构建 Google App Engine 数据存储实体。短字符串(少于 450 个字符)直接存储,长字符串转换为 Text 对象。

for (String key : movieMap.keySet()) {
    String value = movieMap.get(key).trim();
    if (value.length()>0 && value.length()<450) {  // Short String - store as is
        movieEntity.setProperty(key, value);
    } else if (value.length()>=450) {              // Long String - convert to text
        movieEntity.setProperty(key, new Text(value));
    }
}

以下代码将 Entity 作为 Json 对象检索:

Map<String, Object> result = new LinkedHashMap<String, Object>();
result.put("numberOfMovies", String.valueOf(movies.size()));
result.put("movies", movies);
Gson gson = new GsonBuilder().setPrettyPrinting().create();
resp.getWriter().print(gson.toJson(result));

description字符串字段的结果 JSON :

{

      "propertyMap": {
        "title": "טאנו מתחתנת עם מאנו - Tanu Weds Manu",
        "duration": "154 דקות",
        "movieId": "2315",
        "image_url": "http://www.sderot-cin.org.il/media/sal/movies2009/2315/f18_tano mithatenet iim mano.jpg",
        "description": "סינמסטה - מועדון הסרט ההודי רופא ממוצא הודי חוזר מלונדון במטרה לפגוש את כלתו המיועדת. הוא מופתע לגלות כי היא מאוהבת במישהו אחר ואין בכוונתה להינשא לו. התנהגותה הפראית גורמת לו לשקול מחדש את צעדיו.",
        "explorationDate": "Apr 26, 2013 8:42:36 PM",
        "actors": "קנגנה רנאוט, אר מדווהין",
        "year": "2011",
        "language": "הינדית",
        "director": "אנאנד ראי",
        "country": "הודו"
      }
    },
    {

文本字段的结果 JSON description,带有一个奇怪的内部字典:

      "propertyMap": {
        "title": "הנעליים של אדון סימון - הצגת תיאטרון לילדים",
        "movieId": "2316",
        "image_url": "http://www.sderot-cin.org.il/media/sal/movies2009/2316/f18_anaaliim shel adon simon.jpg",
        "description": {
          "value": {
            "value": "תיאטרון אורנה פורת לגילאי 3-7 אדון סימון עוזב את ארצו ועובר לגור בארץ אחרת. בביתו החדש הוא מחליט להיפרד מנעליו הישנות שליוו אותו כל חייו ולהחליפן בנעליים חדשות, אך משום מה הוא לא מצליח להיפטר מהישנות. בכל פעם שהוא זורק אותן, רחוק ככל שיהיה, הן תמיד חוזרות אליו בדרך פלא. הצגה מרגשת ומצחיקה שמלמדת אותנו לקבל בשמחה את הדברים החדשים שבחיינו ובאותו זמן להבין שאפשר גם להתגעגע לדברים הישנים. משך ההצגה כ50 דקות.  כרטיסים: מכירה מוקדמת-30 ₪, ביום ההצגה-40 ₪ מנוי/מלווה : מכירה מוקדמת 20 ₪, ביום ההצגה  30 ₪."
          }
        },
        "explorationDate": "Apr 26, 2013 8:42:36 PM"
      }
    },

问题是该字段为字符串description字段返回正常(keyvalue对),但value对于文本字段有一个奇怪的内部键 -description在两个示例中进行比较。

知道如何使Text字段正常运行并显示为标准

4

1 回答 1

1

看起来内部字典是序列化复杂的 GAE 数据存储文本对象的结果。

由于您正在使用键访问您的数据字段,那么我猜注释和一些 getter/setter 方法是不可能的?

在这种情况下,修复它的一种简单方法可能是在检索到 Map 后迭代 Map,并使用标准 String 设置(替换)Text“描述”字段(如果它们是 Text 类型)。

然后,当您序列化为 JSON 时,这些字符串将作为其他字符串处理。

于 2013-04-27T20:47:12.197 回答