如何从静态类调用ReadJsonAsync()到另一个类

问题描述 投票:0回答:2

我有一个读取 Json 文件的静态帮助程序类,我需要在另一个公共类中调用该文件并返回 200 响应代码,并以 JSON 文件路径作为响应。

JSON 是静态文件。只是我想学习如何使用我读取的 JSON 文件返回响应代码

代码

Helper.cs

public static class Helper
{
  
public static async Task<string> GetRequestBody(HttpContext httpContext)
{
    string body;
    if (httpContext.Request.HasFormContentType)
    {
        body = JsonSerializer.Serialize(httpContext.Request.Form.ToList());
    }
    else
    {
        // Create StreamReader And Starting Reading The Request Body.
        using var streamReader = new StreamReader(httpContext.Request.Body, Encoding.UTF8, true, 1024, true);
        // Assign The Stream Content To The Payload Object
        body = await streamReader.ReadToEndAsync();
    }

    return body;
}
    public static async Task Main(string[] args)
    {
        string filePath = "path/to/your/file.json";
        var jsonData = await ReadJsonFileAsync(filePath);
        Console.WriteLine(jsonData);
    }

    public static async Task<string> ReadJsonFileAsync(string filePath)
    {
        using (FileStream fs = new FileStream(filePath, FileMode.Open, FileAccess.Read))
        {
            using (StreamReader reader = new StreamReader(fs))
            {
                return await reader.ReadToEndAsync();
            }
        }
    }
}

代码片段

Employeerecord.cs

public class Employeerecord : IEmployeerecord 
{
    public Task<List<Domain.Models.EmployeeRecordData>> GET_Employeerecorddata(int employeelist, int employeeId) 
    {
        // How to call the ReadJSonFileASync from Helper class here
        // also return 200 code with Json filepath response
    }
}
c# asp.net-core .net-core json.net
2个回答
0
投票

首先你必须使

GET_Employeerecorddata
方法异步,然后你可以调用
Helper.ReadJsonFileAsync
方法,如下所示:

public class Employeerecord : IEmployeerecord
{
    public async Task<List<Domain.Models.EmployeeRecordData>> GET_Employeerecorddata(int employeelist, int employeeId)
    {
        // Call the ReadJSonFileASync from Helper class
        string filePath = "path/to/your/file.json";
        string json = await Helper.ReadJsonFileAsync(filePath);
    }
}

还要确保添加适当的

using
语句以包含
Helper.cs
类所属的命名空间。


0
投票

您的要求相当广泛,但我想我可以提供最少的信息来帮助您入门。

首先,看起来您正在寻找某个将从文件返回数据的端点。

要创建此类端点(HTTP 端点),您需要创建 Web 应用程序,在 .NET 中,您可以通过创建 ASP.NET Core 应用程序之一来完成此操作。为了简单起见,我们可以使用 Web API,将前端排除在外。

因此,创建“ASP.NET Core Web API”类型的新项目(使用 dotnet CLI 就只是

dotnet new webapi
)。

您将拥有

Program.cs
,您将对其进行修改以定义端点,它应该如下所示:

var builder = WebApplication.CreateBuilder(args);

// Add services to the container.
// Learn more about configuring Swagger/OpenAPI at https://aka.ms/aspnetcore/swashbuckle
builder.Services.AddEndpointsApiExplorer();
builder.Services.AddSwaggerGen();

var app = builder.Build();

// Configure the HTTP request pipeline.
if (app.Environment.IsDevelopment())
{
    app.UseSwagger();
    app.UseSwaggerUI();
}

app.UseHttpsRedirection();

var summaries = new[]
{
    "Freezing", "Bracing", "Chilly", "Cool", "Mild", "Warm", "Balmy", "Hot", "Sweltering", "Scorching"
};

app.MapGet("/weatherforecast", () =>
{
    var forecast =  Enumerable.Range(1, 5).Select(index =>
        new WeatherForecast
        (
            DateOnly.FromDateTime(DateTime.Now.AddDays(index)),
            Random.Shared.Next(-20, 55),
            summaries[Random.Shared.Next(summaries.Length)]
        ))
        .ToArray();
    return forecast;
})
.WithName("GetWeatherForecast")
.WithOpenApi();

app.Run();

record WeatherForecast(DateOnly Date, int TemperatureC, string? Summary)
{
    public int TemperatureF => 32 + (int)(TemperatureC / 0.5556);
}

我们将删除模板中所有与天气相关的数据。

相反,我们将定义读取文件的方法并调整端点以使用它。以下是更改:

var builder = WebApplication.CreateBuilder(args);

builder.Services.AddEndpointsApiExplorer();
builder.Services.AddSwaggerGen();

var app = builder.Build();

if (app.Environment.IsDevelopment())
{
    app.UseSwagger();
    app.UseSwaggerUI();
}

app.UseHttpsRedirection();

app.MapGet("/get-json-data", () =>
{
    var filePath = "path/to/your/file.json";
    var jsonData = await Helper.ReadJsonFileAsync(filePath);
    return jsonData;
})
.WithOpenApi();

app.Run();

有用的参考:教程:使用 ASP.NET Core 创建 Web API

© www.soinside.com 2019 - 2024. All rights reserved.