如何将 JavaScript 数组转换为 C# 数组?

来源:微信开发网作者:天马头衔:网络博主
导读:本期聚焦于小伙伴创作的《如何将 JavaScript 数组转换为 C# 数组?》,敬请观看详情,探索知识的价值。以下视频、文章将为您系统阐述其核心内容与价值。如果您觉得《如何将 JavaScript 数组转换为 C# 数组?》有用,将其分享出去将是对创作者最好的鼓励。

在前后端分离的开发架构中,前端使用JavaScript处理数据,后端使用C#编写业务逻辑是常见组合,当需要将前端生成的JavaScript数组传递到后端并转换为C#数组时,需要遵循跨语言数据交互的规则,避免类型不匹配导致的错误。

如何将 JavaScript 数组转换为 C# 数组?

基于JSON序列化的通用转换方案

JSON是前后端数据交互最常用的格式,JavaScript数组可以很方便地序列化为JSON字符串,C#端再通过反序列化将JSON字符串转换为对应的数组类型,这是兼容性最好的转换方式。

JavaScript端处理

首先需要将JavaScript数组转换为JSON字符串,然后通过请求传递到后端。如果是基本类型的数组,转换非常简单:

// 定义一个JavaScript字符串数组
let jsStringArray = ["苹果", "香蕉", "橙子"];
// 序列化为JSON字符串
let jsonString = JSON.stringify(jsStringArray);
console.log(jsonString); // 输出 ["苹果","香蕉","橙子"]

// 如果是数字数组
let jsNumberArray = [10, 20, 30, 40];
let numberJson = JSON.stringify(jsNumberArray);
console.log(numberJson); // 输出 [10,20,30,40]

如果是对象类型的JavaScript数组,同样可以通过JSON.stringify完成序列化,只需要保证对象的属性符合JSON格式规范即可。

C#端处理

C#端需要引用处理JSON的相关库,这里以常用的Newtonsoft.Json库为例,首先需要在项目中安装对应的NuGet包,然后编写反序列化代码:

using Newtonsoft.Json;
using System;

class Program
{
    static void Main()
    {
        // 模拟从前端接收到的JSON字符串(字符串数组)
        string jsonFromJs = "["苹果","香蕉","橙子"]";
        // 反序列化为C#字符串数组
        string[] csharpStringArray = JsonConvert.DeserializeObject<string[]>(jsonFromJs);
        
        Console.WriteLine("转换后的C#字符串数组:");
        foreach (var item in csharpStringArray)
        {
            Console.WriteLine(item);
        }

        // 模拟数字数组的JSON字符串
        string numberJsonFromJs = "[10,20,30,40]";
        int[] csharpNumberArray = JsonConvert.DeserializeObject<int[]>(numberJsonFromJs);
        
        Console.WriteLine("转换后的C#数字数组:");
        foreach (var num in csharpNumberArray)
        {
            Console.WriteLine(num);
        }
    }
}

如果是对象类型的数组,需要先定义对应的C#实体类,保证实体类的属性和JavaScript对象的属性名称、类型匹配:

using Newtonsoft.Json;
using System;

// 定义和前端JavaScript对象对应的实体类
public class UserInfo
{
    public string Name { get; set; }
    public int Age { get; set; }
}

class Program
{
    static void Main()
    {
        // 前端传递的对象数组JSON字符串
        string userJson = "[{"Name":"张三","Age":20},{"Name":"李四","Age":25}]";
        // 反序列化为UserInfo数组
        UserInfo[] userArray = JsonConvert.DeserializeObject<UserInfo[]>(userJson);
        
        Console.WriteLine("转换后的用户数组:");
        foreach (var user in userArray)
        {
            Console.WriteLine($"姓名:{user.Name},年龄:{user.Age}");
        }
    }
}

特殊场景的转换注意事项

在实际开发中,需要注意几个容易出错的场景:

  • 数据类型匹配:JavaScript的数字类型没有区分整数和浮点数,而C#的数组类型需要明确指定,比如如果是带小数的数组,反序列化时要使用double[]而不是int[],否则会出现转换异常。
  • 空值处理:JavaScript数组中可能包含null值,C#端对应的引用类型数组可以接收null,但值类型数组如果包含null会抛出异常,需要先做空值校验。
  • 日期类型处理:JavaScript的Date对象序列化后会变成字符串,C#端反序列化时需要指定日期格式,避免格式不匹配导致的转换失败。

其他转换方式

如果是同构环境下的转换,比如使用Blazor开发时,JavaScript和C#运行在同一个运行时中,可以通过IJSRuntime直接传递数组,不需要经过JSON序列化:

using Microsoft.JSInterop;
using System.Threading.Tasks;

public class ArrayService
{
    private readonly IJSRuntime _jsRuntime;

    public ArrayService(IJSRuntime jsRuntime)
    {
        _jsRuntime = jsRuntime;
    }

    public async Task GetJsArray()
    {
        // 直接调用JavaScript方法获取数组,Blazor会自动完成类型转换
        string[] result = await _jsRuntime.InvokeAsync<string[]>("getJsStringArray");
    }
}

对应的JavaScript方法定义如下:

// 定义返回数组的JavaScript方法
function getJsStringArray() {
    return ["测试1", "测试2", "测试3"];
}

这种方式的转换效率更高,但仅适用于Blazor等特殊的开发场景,大部分前后端分离项目还是推荐使用JSON序列化的方式完成转换。

JavaScript C# 数组转换 JSON_serialization修改时间:2026-06-17 02:33:44

免责声明:​ 已尽一切努力确保本网站所含信息的准确性。网站内容多为原创整理与精心编撰,观点力求客观中立。本站旨在免费分享,内容仅供个人学习、研究或参考使用。若引用了第三方作品,版权归原作者所有。如内容涉及您的权益,请联系我们处理。
内容垂直聚焦
专注技术核心技术栏目,确保每篇文章深度聚焦于实用技能。从代码技巧到架构设计,为用户提供无干扰的纯技术知识沉淀,精准满足专业提升需求。
知识结构清晰
覆盖从开发到部署的全链路。AI、前端、编程、数据库、服务器、建站、系统层层递进,构建清晰学习路径,帮助用户系统化掌握开发与运维所需的核心技术。
深度技术解析
拒绝泛泛而谈,深入技术细节与实践难点。无论是数据库优化还是服务器配置,均结合真实场景与代码示例进行剖析,致力于提供可直接应用于工作的解决方案。
专业领域覆盖
精准对应开发生命周期。从前端界面到后端编程,从数据库操作到服务器运维,形成完整闭环,一站式满足全栈工程师和运维人员的技术需求。
即学即用高效
内容强调实操性,步骤清晰、代码完整。用户可根据教程直接复现和应用于自身项目,显著缩短从学习到实践的距离,快速解决开发中的具体问题。
持续更新保障
专注既定技术方向进行长期、稳定的内容输出。确保各栏目技术文章持续更新迭代,紧跟主流技术发展趋势,为用户提供经久不衰的学习价值。