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

C#中有没有等效于Python ast.literal_eval的函数?

C# 字符串编码数组/嵌套结构解析方案

内置方案(.NET Core 3.0+ / .NET 5+ 可用,无需第三方依赖)

你要的功能完全可以用.NET 自带的System.Text.Json库实现,和Python的ast.literal_eval对这类标准JSON结构的解析效果完全一致,支持同类型数组、混合类型嵌套结构的解析。

示例1:解析浮点数组

using System.Text.Json;

string input = "[1.2,24.4,35.5,4.5]";
float[] result = JsonSerializer.Deserialize<float[]>(input);
// 输出结果:float[] { 1.2F, 24.4F, 35.5F, 4.5F }

示例2:解析混合嵌套结构

因为C#是强类型语言,混合类型的结构你可以解析为通用的JsonElement类型,按需读取对应位置的值即可:

using System.Text.Json;

string input = "[\"foo\",123,[1,2,3]]";
JsonElement result = JsonSerializer.Deserialize<JsonElement>(input);

// 按需取值
string strVal = result[0].GetString(); // 得到 "foo"
int intVal = result[1].GetInt32(); // 得到 123
int[] arrVal = result[2].Deserialize<int[]>(); // 得到 int[] { 1, 2, 3 }

.NET Framework 兼容方案

如果使用的是老版本.NET Framework,可通过Newtonsoft.Json(Json.NET)实现相同效果:

using Newtonsoft.Json;

// 解析浮点数组
string floatInput = "[1.2,24.4,35.5,4.5]";
float[] floatArr = JsonConvert.DeserializeObject<float[]>(floatInput);

// 解析混合嵌套结构
string nestedInput = "[\"foo\",123,[1,2,3]]";
dynamic nestedResult = JsonConvert.DeserializeObject(nestedInput);
string strVal = nestedResult[0].Value;
int intVal = nestedResult[1].Value;
int[] arrVal = nestedResult[2].ToObject<int[]>();

注意:你给出的示例字符串本身就是标准JSON数组格式,上述两个库都可以直接解析,无需额外做格式处理。

内容的提问来源于stack exchange,提问作者Sami Wood

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 11:06:04