You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将PHP序列化格式字符串转换为Dart List?

将PHP序列化数组转换为Dart List

针对你提供的PHP序列化字符串(这是一个包含12个整数的索引数组),可以通过两种方式转换为Dart的List<int>:

方法一:手动解析(无需依赖第三方包)

因为目标字符串结构简单,都是整数类型的索引数组,直接按规则提取数值即可:

void main() {
  String phpSerialized = "a:12{i:0;i:108;i:1;i:109;i:2;i:6;i:3;i:3;i:4;i:103;i:5;i:121;i:6;i:143;i:7;i:127;i:8;i:140;i:9;i:126;i:10;i:149;i:11;i:162;}";
  
  // 移除数组声明和首尾括号
  String coreContent = phpSerialized.replaceFirst(RegExp(r'a:\d+{'), '').replaceAll('}', '');
  
  // 按分号分割并过滤空片段
  List<String> segments = coreContent.split(';').where((s) => s.isNotEmpty).toList();
  
  List<int> targetList = [];
  
  // 每两个片段为一组,提取值部分的整数
  for (int i = 1; i < segments.length; i += 2) {
    String valueStr = segments[i].split(':')[1];
    targetList.add(int.parse(valueStr));
  }
  
  print(targetList); // 输出结果:[108, 109, 6, 3, 103, 121, 143, 127, 140, 126, 149, 162]
}

方法二:使用第三方包(适用于复杂结构)

如果后续需要处理更复杂的PHP序列化数据(比如嵌套数组、字符串、对象等),可以使用Dart的php_serializer包:

  1. 在pubspec.yaml中添加依赖:
dependencies:
  php_serializer: ^1.0.0
  1. 编写解析代码:
import 'package:php_serializer/php_serializer.dart';

void main() {
  String phpSerialized = "a:12{i:0;i:108;i:1;i:109;i:2;i:6;i:3;i:3;i:4;i:103;i:5;i:121;i:6;i:143;i:7;i:127;i:8;i:140;i:9;i:126;i:10;i:149;i:11;i:162;}";
  
  // 反序列化PHP字符串
  dynamic deserialized = PhpSerializer().deserialize(phpSerialized);
  
  // 转换为Dart的List<int>
  List<int> targetList = List<int>.from(deserialized);
  
  print(targetList);
}

内容的提问来源于stack exchange,提问作者Dustin Miller

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 15:27:23