如何在Google API上的SpreadSheet Feed中保留正确的密钥

时间:2015-01-02 15:40:42

标签: java google-api google-spreadsheet-api

我有以下非常简单的方法从电子表格中检索数据作为记录:

List<Map<String, String>> records = new ArrayList<>();
ListFeed feed = spreadsheetService.getFeed(worksheet.getListFeedUrl(), ListFeed.class);
for (ListEntry row : feed.getEntries()) {
    Map<String, String> record = new HashMap<>();
    for (String tag : row.getCustomElements().getTags()) {
        record.put(tag, row.getCustomElements().getValue(tag));
    }
    records.add(record);
}

然而,他的tag不是我在表格中作为标题写的正确字符串。似乎API剥离每个重音,空格,括号和上帝都知道什么,并且在将它们存储在地图上之前也将每个字母都放到小写字母上(只是键,值很好)。

所以:

  1. 它究竟是什么剥离/保留,为什么?
  2. 如何阻止它这样做,或者至少解决它?
  3. 到目前为止,当我检索数据时,我已经删除了我提到的用于引用字符串的字符。所以我做了类似的事情:

    private static String normalize(String key) {
        return StringUtils.stripAccents(key).replaceAll(" ", "").replaceAll("\\(", "").replaceAll("\\)", "").toLowerCase();
    }
    

    但这很糟糕,因为:

    1. 我不确定google删除了什么,所以我不知道它是否有效(因为测试版我必须添加括号,现在也减少了这个方法)
    2. 我发生的主要冲突(例如''sting'=='as ting'等)
    3. 列的名称是用户输入,我不想限制我的用户只使用非常类似于变量名的字符串。而且我不希望他们因为他们甚至不知道存在的关键冲突而出错。它应该对他们透明。

      想法?

0 个答案:

没有答案