C#与Java后台交互

C#与 Java 后台交互通常通过 HTTP 协议进行,标准做法是将 `List<T>` 序列化为 JSON 字符串发送,Java 后端使用 `@RequestBody` 接收并自动反序列化。

  1. C#端(发送方)

使用 `System.Text.Json` 或 `Newtonsoft.Json` 将 List 序列化为 JSON 字符串,并通过 HttpClient 发送 POST 请求。

using System;

using System.Collections.Generic;

using System.Net.Http;

using System.Text;

using System.Text.Json;

using System.Threading.Tasks;

public class DataSender

{

public async Task SendListToJavaAsync()

{

var list = new List<Person>

{

new Person { Id = 1, Name = "Alice" },

new Person { Id = 2, Name = "Bob" }

};

// 序列化为 JSON

string jsonContent = JsonSerializer.Serialize(list);

using var httpClient = new HttpClient();

// 设置内容类型为 application/json

var content = new StringContent(jsonContent, Encoding.UTF8, "application/json");

// 发送 POST 请求到 Java 后台接口

var response = await httpClient.PostAsync("http://localhost:8080/api/receive-list", content);

if (response.IsSuccessStatusCode)

{

Console.WriteLine("发送成功");

}

}

}

// 定义对应的数据模型

public class Person

{

public int Id { get; set; }

public string Name { get; set; }

}

  1. Java 端(接收方)

使用 Spring Boot 框架,通过 `@RestController` 和 `@PostMapping` 接收请求,`@RequestBody` 会自动将 JSON 数组反序列化为 `List<T>`。

import org.springframework.web.bind.annotation.*;

import java.util.List;

@RestController

@RequestMapping("/api")

public class DataController {

@PostMapping("/receive-list")

public String receiveList(@RequestBody List<Person> personList) {

// 直接操作接收到的 List

for (Person person : personList) {

System.out.println("ID: " + person.getId() + ", Name: " + person.getName());

}

return "Received " + personList.size() + " items";

}

}

// 定义对应的数据模型,需包含 getter/setter

class Person {

private int id;

private String name;

public int getId() { return id; }

public void setId(int id) { this.id = id; }

public String getName() { return name; }

public void setName(String name) { this.name = name; }

}

关键点:

  • C#端必须设置 `Content-Type` 为 `application/json`。

  • Java 端实体类字段名需与 C#端 JSON 键名一致(默认驼峰命名匹配)。

  • 若 C#使用 `Newtonsoft.Json`,序列化方法为 `JsonConvert.SerializeObject(list)`。

相关推荐
Hello_Pyhx8 小时前
iPhoneMirror:把 iPhone 接入 Windows,先分清投屏与反控
windows·ios·iphone
panxianren12 小时前
Bun 1.4 的 bun test --parallel 将 4 秒的测试套件缩短到约 1 秒
java·javascript
sunshine22 girl14 小时前
Java学习七 Java 项目实战2-注册业务
java·学习
省钱兄--zs14 小时前
北京24小时自助健身房系统软件开发实战:从架构设计到部署指南
java·数据仓库·spring boot·小程序·需求分析
youdexiang15 小时前
Android录音软件时间关键词检索功能分析
java·人工智能
sunshine22 girl15 小时前
Java学习七 Java 项目实战1-项目创建和主页面搭建
java·开发语言·学习
code2cat15 小时前
Java进阶篇之AtomicStampedReference:引用回到原值,版本戳仍能记住变化
java·cas·并发编程·aba
kakakahahahaha17 小时前
Win10开始菜单打不开排查:explorer、AppX注册、SFC、服务与用户配置修复
windows·电脑·笔记本电脑·内容运营·软件需求
泡茶喝茶写代码17 小时前
A股量化数据工程:从 REST 接口到策略信号(第 8 篇):成长能力因子:营收与利润增速
java·python·股票数据api·股票数据api接口·股票量化数据api·股票量化数据接口·股票数据api数据
ITHAOGE1517 小时前
下载 | Windows Server 2016最新纯净版ISO映像!(集成9月更新、标准版、数据中心版、14393.9514)
windows·科技·微软·电脑