Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/87.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql flatter如何将编码为SQFL数据库字符串的列表简明地转换回列表?_Sql_Flutter_Dart_Sqflite - Fatal编程技术网

Sql flatter如何将编码为SQFL数据库字符串的列表简明地转换回列表?

Sql flatter如何将编码为SQFL数据库字符串的列表简明地转换回列表?,sql,flutter,dart,sqflite,Sql,Flutter,Dart,Sqflite,我担心我想在这里重新发明轮子。我正在将对象放入我的SQFL数据库: 有些对象字段是整数列表,有些是字符串列表。我将它们编码为普通字符串,以放置在SQFL数据库的文本字段中 在某个时候,我将不得不把它们转回去,我在谷歌上找不到任何东西,这是令人惊讶的,因为这在SQFL中肯定是非常常见的 我已经开始编写“解码”,但这是新手飞镖。周围有什么我应该用的东西吗 代码包括证明我不是完全懒惰,不需要看,边缘案例使它失败 List<int> listOfInts = new List<i

我担心我想在这里重新发明轮子。我正在将对象放入我的SQFL数据库:

有些对象字段是整数列表,有些是字符串列表。我将它们编码为普通字符串,以放置在SQFL数据库的文本字段中

在某个时候,我将不得不把它们转回去,我在谷歌上找不到任何东西,这是令人惊讶的,因为这在SQFL中肯定是非常常见的

我已经开始编写“解码”,但这是新手飞镖。周围有什么我应该用的东西吗

代码包括证明我不是完全懒惰,不需要看,边缘案例使它失败

  List<int> listOfInts = new List<int>();

  String testStringOfInts = "[1,2,4]";
  List<String> intermediateStep2 = testStringOfInts.split(',');

  int numListElements = intermediateStep2.length;

  print("intermediateStep2: $intermediateStep2, numListElements: $numListElements");
  for (int i = 0; i < numListElements; i++) {
    if (i == 0) {
      listOfInts.add(int.parse(intermediateStep2[i].substring(1)));
      continue;
    }
    else if ((i) == (numListElements - 1)) {
      print('final element: ${intermediateStep2[i]}');
      listOfInts.add(int.parse(intermediateStep2[i].substring(0, intermediateStep2[i].length - 1)));
      continue;
    }
    else listOfInts.add(int.parse(intermediateStep2[i]));
  }
  print('Output: $listOfInts');

  /* DECODING LISTS OF STRINGS */
  String testString = "['element1','element2','element23']";
  List<String> intermediateStep = testString.split("'");
  List<String> output = new List<String>();

  for (int i = 0; i < intermediateStep.length; i++) {
    if (i % 2 == 0) {
      continue;
    } else {
      print('adding a value to output: ${intermediateStep[i]}');
      //print('value is a: ${(intermediateStep[i]).runtimeType}');
      output.add(intermediateStep[i]);
    }
  }
  print('Output: $output');
}
List listofits=new List();
字符串testStringOfInts=“[1,2,4]”;
List intermediatestP2=testStringOfInts.split(',');
int NUMLISTELENTS=中间值P2.length;
打印(“中间文件2:$intermediatestP2,numListElements:$numListElements”);
对于(int i=0;i
对于整数,您可以进行如下解析:

void main() {
  print(parseStringAsIntList("[1,2,4]")); // [1, 2, 4]
}

List<int> parseStringAsIntList(String stringOfInts) => stringOfInts
    .substring(1, stringOfInts.length - 1)
    .split(',')
    .map(int.parse)
    .toList();

什么是SQFL?字符串示例,字符串总是这样表示的吗?整数呢?如果字符串本身包含
符号,会发生什么?您好@julemand101,我已经添加了到SQFL插件数据库的链接,f='flatter'。它提供了4种数据类型:整数、实数、文本(Srings)、BLOB。所以我的很多对象字段都是列表,或者是列表,它们被转换成字符串,然后添加到数据库中。但我想知道是否有一种优雅、紧凑的方式将它们从字符串转换回列表。这会有很大帮助。毫无疑问,我不希望看到疯狂的边缘案例&表现得更好。你知道数组中是否有任何字符串包含
?这是一次很好的对话,是的,做了一些研究后,我将Google Firebase自动生成的ID存储在一些列表中,不幸的是,这两个标点符号都是允许的。伙计!我将不得不对列表进行不同的编码斜杠在Firebase ID中是禁止使用的字符,所以我必须将列表转换为字符串,然后用逗号替换斜杠。真是个笨蛋!除非你知道更好的方法?考虑到这种计算开销,我认为对于更抽象的数据类型,JSON数据存储可能最终会得到更干净、更健壮的代码。只是这让事情变得更加困难,我不想为不可能发生的事情创造一个解决方案。但是可以,您应该以不同的方式使用JSON编码/解码将数据存储为字符串,而不是发明自己的格式。:)谢谢@julemand101,很高兴看到一种简洁、清晰的做事方式。喜欢用Dart绘制地图。萨姆。
void main() {
  print(parseStringAsStringList("['element1','element2','element23']"));
  // [element1, element2, element23]
}

List<String> parseStringAsStringList(String stringOfStrings) => stringOfStrings
    .substring(1, stringOfStrings.length - 1)
    .split(',')
    .map((string) => string.substring(1, string.length - 1))
    .toList();