ASP.NET Core项目中如何放置JSON文件并编写其读取路径?
1. mockData.json 存放位置
推荐放在项目根目录,和 .csproj 项目文件、Program.cs 同级即可。
存放后需要修改文件的输出属性,确保编译后文件会被复制到运行目录:
- 方式1:Visual Studio中右键
mockData.json→ 选择「属性」→ 在「高级」分组中将「复制到输出目录」修改为「如果较新则复制」 - 方式2:直接编辑
.csproj文件,添加如下配置:
<ItemGroup> <Content Update="mockData.json"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </Content> </ItemGroup>
2. Program.cs 路径读取代码
基础读取写法
直接拼接应用运行基目录和文件名即可,不需要写死绝对路径,额外增加了反序列化大小写兼容配置,避免属性名大小写不一致导致反序列化失败:
// 拼接mock文件路径 var mockFilePath = Path.Combine(AppContext.BaseDirectory, "mockData.json"); // 读取并反序列化 var data = JsonSerializer.Deserialize<DataClass>( File.ReadAllText(mockFilePath), new JsonSerializerOptions { PropertyNameCaseInsensitive = true } );
适配开发环境的进阶写法
如果你只希望在开发环境使用Mock数据,生产环境走真实REST接口,可以结合环境变量判断:
var builder = WebApplication.CreateBuilder(args); var app = builder.Build(); DataClass data; // 仅开发环境使用Mock数据 if (builder.Environment.IsDevelopment()) { var mockFilePath = Path.Combine(AppContext.BaseDirectory, "mockData.json"); data = JsonSerializer.Deserialize<DataClass>( File.ReadAllText(mockFilePath), new JsonSerializerOptions { PropertyNameCaseInsensitive = true } ); } else { // 生产环境走真实REST接口请求逻辑 // data = await httpClient.GetFromJsonAsync<DataClass>("真实接口地址"); }
内容的提问来源于stack exchange,提问作者Romulus Urakagi Ts'ai
相关产品推荐
相关产品推荐

