Skip to content

Commit 8c89640

Browse files
Added JsonService
1 parent 4bb4b0a commit 8c89640

File tree

8 files changed

+51
-2
lines changed

8 files changed

+51
-2
lines changed

src/jQueryDatatableServerSideNetCore/Controllers/TestRegistersController.cs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -157,6 +157,11 @@ await _exportService.ExportToExcel(resultList),
157157
return File(_exportService.ExportToHtml(resultList),
158158
"application/csv",
159159
"data.html");
160+
161+
case ExportFormat.Json:
162+
return File(_exportService.ExportToJson(resultList),
163+
"application/json",
164+
"data.json");
160165
}
161166

162167
return null;

src/jQueryDatatableServerSideNetCore/Data/ExportFormat.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,5 +11,6 @@ public class ExportFormat
1111
public const string Csv = "csv";
1212
public const string CsvDelimiter = ",";
1313
public const string Html = "html";
14+
public const string Json = "json";
1415
}
1516
}

src/jQueryDatatableServerSideNetCore/Program.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
using jQueryDatatableServerSideNetCore.Services.ExcelService;
44
using jQueryDatatableServerSideNetCore.Services.ExportService;
55
using jQueryDatatableServerSideNetCore.Services.HtmlService;
6+
using jQueryDatatableServerSideNetCore.Services.JsonService;
67
using Microsoft.AspNetCore.Identity;
78
using Microsoft.EntityFrameworkCore;
89
using Microsoft.OpenApi.Models;
@@ -29,6 +30,7 @@
2930
builder.Services.AddScoped<IExcelService, ExcelService>();
3031
builder.Services.AddScoped<ICsvService, CsvService>();
3132
builder.Services.AddScoped<IHtmlService, HtmlService>();
33+
builder.Services.AddScoped<IJsonService, JsonService>();
3234

3335
// Register the Swagger generator, defining 1 or more Swagger documents
3436
builder.Services.AddSwaggerGen(c =>

src/jQueryDatatableServerSideNetCore/Services/ExportService/ExportService.cs

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
using jQueryDatatableServerSideNetCore.Services.CsvService;
33
using jQueryDatatableServerSideNetCore.Services.ExcelService;
44
using jQueryDatatableServerSideNetCore.Services.HtmlService;
5-
using System.Text;
5+
using jQueryDatatableServerSideNetCore.Services.JsonService;
66

77
namespace jQueryDatatableServerSideNetCore.Services.ExportService
88
{
@@ -11,12 +11,14 @@ public class ExportService : IExportService
1111
private readonly IExcelService _excelService;
1212
private readonly ICsvService _csvService;
1313
private readonly IHtmlService _htmlService;
14+
private readonly IJsonService _jsonService;
1415

15-
public ExportService(IExcelService excelService, ICsvService csvService, IHtmlService htmlService)
16+
public ExportService(IExcelService excelService, ICsvService csvService, IHtmlService htmlService, IJsonService jsonService)
1617
{
1718
_excelService = excelService;
1819
_csvService = csvService;
1920
_htmlService = htmlService;
21+
_jsonService = jsonService;
2022
}
2123

2224
public async Task<byte[]> ExportToExcel(List<TestRegister> registers)
@@ -33,5 +35,10 @@ public byte[] ExportToHtml(List<TestRegister> registers)
3335
{
3436
return _htmlService.Write(registers);
3537
}
38+
39+
public byte[] ExportToJson(List<TestRegister> registers)
40+
{
41+
return _jsonService.Write(registers);
42+
}
3643
}
3744
}

src/jQueryDatatableServerSideNetCore/Services/ExportService/IExportService.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,5 +12,7 @@ public interface IExportService
1212
byte[] ExportToCsv(List<TestRegister> registers);
1313

1414
byte[] ExportToHtml(List<TestRegister> registers);
15+
16+
byte[] ExportToJson(List<TestRegister> registers);
1517
}
1618
}
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
namespace jQueryDatatableServerSideNetCore.Services.JsonService
2+
{
3+
public interface IJsonService
4+
{
5+
byte[] Write<T>(IList<T> registers);
6+
}
7+
}
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
using System.Text;
2+
using System.Text.Json;
3+
4+
namespace jQueryDatatableServerSideNetCore.Services.JsonService
5+
{
6+
public class JsonService : IJsonService
7+
{
8+
public byte[] Write<T>(IList<T> registers)
9+
{
10+
return Encoding.UTF8.GetBytes(JsonSerializer.Serialize(registers));
11+
}
12+
}
13+
}

src/jQueryDatatableServerSideNetCore/wwwroot/js/app.js

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,12 @@ $(document).ready(function () {
3333
action: function () {
3434
exportToHtml();
3535
}
36+
},
37+
{
38+
text: 'JSON',
39+
action: function () {
40+
exportToJson();
41+
}
3642
}
3743
],
3844
// Searching Setups
@@ -147,5 +153,11 @@ function exportToCsv() {
147153
function exportToHtml() {
148154
renderDownloadForm("html");
149155

156+
$("#export-to-file-form").submit();
157+
}
158+
159+
function exportToJson() {
160+
renderDownloadForm("json");
161+
150162
$("#export-to-file-form").submit();
151163
}

0 commit comments

Comments
 (0)