Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Bu makalede, JSON'da açıklamalara, sondaki virgüllere ve tırnak içine alınmış sayılara nasıl izin verileceğini ve sayıların dize olarak nasıl yazılacağını öğreneceksiniz.
Açıklamalara ve sondaki virgüllere izin ver
Varsayılan olarak, JSON'da açıklamalara ve sondaki virgüllere izin verilmez. JSON'da açıklamalara izin vermek için JsonSerializerOptions.ReadCommentHandling özelliğini JsonCommentHandling.Skip olarak ayarlayın.
Sonraki virgüllere izin vermek için JsonSerializerOptions.AllowTrailingCommas özelliğini true olarak ayarlayın. Aşağıdaki örnekte her ikisine de izin verme gösterilmektedir:
var options = new JsonSerializerOptions
{
ReadCommentHandling = JsonCommentHandling.Skip,
AllowTrailingCommas = true,
};
WeatherForecast weatherForecast = JsonSerializer.Deserialize<WeatherForecast>(
jsonString,
options
)!;
Dim options As JsonSerializerOptions = New JsonSerializerOptions With {
.ReadCommentHandling = JsonCommentHandling.Skip,
.AllowTrailingCommas = True
}
Dim weatherForecast1 = JsonSerializer.Deserialize(Of WeatherForecast)(jsonString, options)
Açıklamaları ve sondaki virgülleri içeren örnek JSON aşağıda verilmiştir:
{
"Date": "2019-08-01T00:00:00-07:00",
"TemperatureCelsius": 25, // Fahrenheit 77
"Summary": "Hot", /* Zharko */
// Comments on
/* separate lines */
}
Tırnak içinde numaralara izin verme veya sayı yazma
Bazı serileştiriciler sayıları JSON dizelerinde olduğu gibi tırnak işaretleriyle çevrili olarak kodlar.
Örneğin:
{
"DegreesCelsius": "23"
}
Onun yerine:
{
"DegreesCelsius": 23
}
Giriş nesnesi grafiğinin tamamında tırnak içindeki sayıları seri hale getirmek veya kabul etmek için, aşağıdaki örnekte gösterildiği gibi JsonSerializerOptions.NumberHandling ayarını yapın.
using System.Text.Json;
using System.Text.Json.Serialization;
namespace QuotedNumbers
{
public class Forecast
{
public DateTime Date { get; init; }
public int TemperatureC { get; set; }
public string? Summary { get; set; }
};
public class Program
{
public static void Run()
{
Forecast forecast = new()
{
Date = DateTime.Now,
TemperatureC = 40,
Summary = "Hot"
};
JsonSerializerOptions options = new()
{
NumberHandling =
JsonNumberHandling.AllowReadingFromString |
JsonNumberHandling.WriteAsString,
WriteIndented = true
};
string forecastJson =
JsonSerializer.Serialize<Forecast>(forecast, options);
Console.WriteLine($"Output JSON:\n{forecastJson}");
Forecast forecastDeserialized =
JsonSerializer.Deserialize<Forecast>(forecastJson, options)!;
Console.WriteLine($"Date: {forecastDeserialized.Date}");
Console.WriteLine($"TemperatureC: {forecastDeserialized.TemperatureC}");
Console.WriteLine($"Summary: {forecastDeserialized.Summary}");
}
}
}
// Produces output like the following example:
//
//Output JSON:
//{
// "Date": "2020-10-23T12:27:06.4017385-07:00",
// "TemperatureC": "40",
// "Summary": "Hot"
//}
//Date: 10/23/2020 12:27:06 PM
//TemperatureC: 40
//Summary: Hot
Imports System.Text.Json
Imports System.Text.Json.Serialization
Namespace QuotedNumbers
Public Class Forecast
Public Property [Date] As Date
Public Property TemperatureC As Integer
Public Property Summary As String
End Class
Public NotInheritable Class Program
Public Shared Sub Main()
Dim forecast1 As New Forecast() With {
.[Date] = Date.Now,
.TemperatureC = 40,
.Summary = "Hot"
}
Dim options As New JsonSerializerOptions() With {
.NumberHandling = JsonNumberHandling.AllowReadingFromString Or
JsonNumberHandling.WriteAsString,
.WriteIndented = True
}
Dim forecastJson As String = JsonSerializer.Serialize(forecast1, options)
Console.WriteLine($"Output JSON:{forecastJson}")
Dim forecastDeserialized As Forecast = JsonSerializer.Deserialize(Of Forecast)(forecastJson, options)
Console.WriteLine($"Date: {forecastDeserialized.[Date]}")
Console.WriteLine($"TemperatureC: {forecastDeserialized.TemperatureC}")
Console.WriteLine($"Summary: {forecastDeserialized.Summary}")
End Sub
End Class
End Namespace
' Produces output like the following example:
'
'Output JSON:
'{
' "Date": "2020-10-23T12:27:06.4017385-07:00",
' "TemperatureC": "40",
' "Summary": "Hot"
'}
'Date: 10/23/2020 12:27:06 PM
'TemperatureC: 40
'Summary: Hot
ASP.NET Core aracılığıyla dolaylı olarak System.Text.Json kullandığınızda, ASP.NET Core web varsayılan seçeneklerini belirttiği için seri durumdan çıkarma işlemi sırasında tırnak içine alınan sayılara izin verilir.
Belirli özellikler, alanlar veya türler için tırnak içine alınmış sayılara izin vermek veya bunları yazmak için [JsonNumberHandling] özniteliğini kullanın.