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

如何将字符串转换为对象数组?.NET场景下的实现可行性问询

当然可以实现!

你的需求完全能搞定,不过有个小前提:你提供的字符串不是标准JSON格式——JSON规范要求所有属性名必须用双引号包裹,所以我们需要先把它转换成合法的JSON结构,之后就能用.NET的序列化工具轻松转成目标对象列表了。

步骤1:修复字符串为合法JSON

我们可以用正则表达式来给没有引号的属性名加上双引号,代码示例:

var s = "[{role:staff, storeId: 1234}, {role:admin, storeId: 4321}]";
// 使用正则替换,匹配属性名并添加双引号
var validJson = System.Text.RegularExpressions.Regex.Replace(s, @"(\w+):", @"$1":");
// 替换后validJson会变成:[{"role":"staff", "storeId": 1234}, {"role":"admin", "storeId": 4321}]

步骤2:反序列化为.NET对象列表

接下来就可以用.NET里的序列化库来转换了,这里提供两种常用方案:

方案1:使用Newtonsoft.Json(Json.NET)

这是.NET生态里非常流行的第三方序列化库,需要先通过NuGet安装Newtonsoft.Json包,然后代码如下:

using Newtonsoft.Json;

// 你的目标对象定义
public class StaffAccountObj 
{ 
    public string role { get; set; } 
    public string storeId { get; set; } 
}

// 反序列化
var accountList = JsonConvert.DeserializeObject<List<StaffAccountObj>>(validJson);

方案2:使用System.Text.Json(.NET Core 3.0+ 内置)

如果你用的是较新版本的.NET(Core 3.0+或.NET 5+),可以直接用内置的System.Text.Json,无需额外安装包:

using System.Text.Json;

// 你的目标对象定义
public class StaffAccountObj 
{ 
    public string role { get; set; } 
    public string storeId { get; set; } 
}

// 配置序列化选项(可选,确保属性名大小写不敏感匹配)
var options = new JsonSerializerOptions
{
    PropertyNameCaseInsensitive = true
};

// 反序列化
var accountList = JsonSerializer.Deserialize<List<StaffAccountObj>>(validJson, options);

额外说明

原字符串里的storeId值是数字类型(比如1234),但你的目标对象里storeId是string类型——不用担心,上述两个序列化库都会自动完成数字到字符串的转换,不需要额外处理。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 09:46:59