java - 将字符串转换为多维数组

标签 java arrays string google-app-engine

上下文:我已将数组转换为字符串,然后转换为字节,以便可以将其作为 blob 存储在数据库中。然后我想检索该数组。我检索 blob 并从字节中检索字符串。然后我想从字符串中检索数组。

现在我一直在寻找将字符串转换回数组的各种选项。我曾考虑过使用 string.split() 和某些正则表达式来恢复我的数组,但是,由于它是多维的,这变得有点复杂。但是,是否有一种简单的方法可以将字符串转换回数组,其中字符串仍然包含其原始的“数组语法”?

例如

Array array = {1, 2, 3}
String string = array.toString()
[insert string back to array]

干杯!

附:可以将数组存储在数据库(谷歌应用程序引擎)中,而不需要这种低效的复杂方法吗?

最佳答案

您可以将列表存储为嵌入属性。

例如,这里有我用于满足这些需求的通用实用程序类...

import java.util.ArrayList;
import java.util.List;

import com.google.appengine.api.datastore.EmbeddedEntity;
/**
 * Utility class for storing Lists of simple objects
 * @author toni.navarro
 * 
 * 
 *
 */
@SuppressWarnings("unchecked")
public class ListTransformer<T> {
    public List<T> toList(List<EmbeddedEntity> embeddedList) {              
            List<T> list = new ArrayList<T>();
            if (embeddedList!=null) {
                    for (EmbeddedEntity embeddedEntity: embeddedList) {
                            list.add((T) embeddedEntity.getProperty("value"));
                    }
            }
            return list;
    }

    public List<EmbeddedEntity> toEmbeddedList(List<T> list) {              
            List<EmbeddedEntity> embeddedList = new ArrayList<EmbeddedEntity>();
            if (list!=null) {
                    for (T item: list) {
                            EmbeddedEntity embeddedItem = new EmbeddedEntity();
                            embeddedItem.setUnindexedProperty("value", item);
                            embeddedList.add(embeddedItem);
                    }
            }
            return embeddedList;
    }
}

...然后将其与以下内容一起使用:

embeddedEntity.setUnindexedProperty("possibleQuestions", new ListTransformer<Long>().toEmbeddedList(turn.getPossibleQuestions()));

...和:

turn.setPossibleQuestions(new ListTransformer<Long>().toList((List<EmbeddedEntity>)embeddedEntity.getProperty("possibleQuestions")));

关于java - 将字符串转换为多维数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16521879/

相关文章:

arrays - 在一行中输出数组的简单方法

ruby-on-rails - 如何使用 gsub 删除 .在 ruby 字符串的末尾?

java - 两个数组列表之间的映射数据

java - 错误 : "attribute value must be constant". 我可以在编译时从枚举构造常量吗?

java - 将 ArrayList 拆分为多个 ArrayList

c++ - C++中的字符串标记器

javascript - 正则表达式从字符串中获取所有 JavaScript 变量名称和值

javascript - 无法从 JS 获取数组到我的 Spring 引导 Controller ?

Java - 递归查找所有扩展名修改日期介于两个日期之间的文件

php - 我可以将内存中的数组转换为该数组的代码表示吗?