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

如何在C#中将字符串List转为JSON发送至Flask后端?

解决C#发送字符串列表到Python Flask后端的JSON序列化问题

问题原因

你之前使用dynamic+JsonObject的方式容易出现成员未识别错误,因为JsonObject是WPF/UWP专属类型,且动态类型的成员绑定依赖运行时,容易出现匹配问题。推荐使用.NET标准的JSON序列化方案,兼容性更强。


方案1:匿名类型 + System.Text.Json(.NET Core/.NET 5+ 推荐)

直接用匿名对象包装列表,配合内置的System.Text.Json序列化,无需额外安装包:

using System;
using System.Collections.Generic;
using System.Net.Http;
using System.Text.Json;
using System.Threading.Tasks;

class Program
{
    static async Task Main(string[] args)
    {
        // 准备待发送的字符串列表
        var stringList = new List<string> { "apple", "banana", "cherry" };
        
        // 包装为带List字段的匿名对象
        var requestPayload = new { List = stringList };
        
        // 序列化为JSON字符串
        string json = JsonSerializer.Serialize(requestPayload);
        
        // 创建符合JSON格式的HttpContent
        var content = new StringContent(json, System.Text.Encoding.UTF8, "application/json");
        
        // 发送POST请求到Flask后端
        using var client = new HttpClient();
        var response = await client.PostAsync("http://localhost:5000/api/receive-list", content);
        
        // 处理响应
        if (response.IsSuccessStatusCode)
        {
            string result = await response.Content.ReadAsStringAsync();
            Console.WriteLine("请求成功:" + result);
        }
        else
        {
            Console.WriteLine($"请求失败,状态码:{response.StatusCode}");
        }
    }
}

方案2:强类型DTO类(适合复杂请求场景)

如果需要更规范的代码结构,可定义对应的DTO类,避免动态类型的潜在问题:

// 定义请求数据的DTO类
public class StringListRequest
{
    public List<string> List { get; set; } = new List<string>();
}

// 发送请求的代码
var stringList = new List<string> { "apple", "banana", "cherry" };
var requestPayload = new StringListRequest { List = stringList };
string json = JsonSerializer.Serialize(requestPayload);

// 后续的HttpContent创建、请求发送步骤和方案1完全一致

Flask后端接收代码

对应后端需要解析JSON请求,示例代码如下:

from flask import Flask, request, jsonify

app = Flask(__name__)

@app.route('/api/receive-list', methods=['POST'])
def receive_string_list():
    # 解析JSON请求体
    request_data = request.get_json()
    received_list = request_data.get('List', [])
    
    # 处理列表(示例:打印长度)
    print(f"收到{len(received_list)}条字符串")
    
    # 返回响应
    return jsonify({"status": "ok", "received_items": received_list})

if __name__ == '__main__':
    app.run(host='0.0.0.0', port=5000, debug=True)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 21:20:27