Saya mengubah implementasi newtonsoft saya ke perpustakaan JSON baru di .net core 3.0. Saya memiliki kode berikut
public static bool IsValidJson(string json)
{
try
{
JObject.Parse(json);
return true;
}
catch (Exception ex)
{
Logger.ErrorFormat("Invalid Json Received {0}", json);
Logger.Fatal(ex.Message);
return false;
}
}
Saya tidak dapat menemukan yang setara untuk JObject.Parse(json);
Juga apa yang akan menjadi atribut yang JsonProperty
setara
public class ResponseJson
{
[JsonProperty(PropertyName = "status")]
public bool Status { get; set; }
[JsonProperty(PropertyName = "message")]
public string Message { get; set; }
[JsonProperty(PropertyName = "Log_id")]
public string LogId { get; set; }
[JsonProperty(PropertyName = "Log_status")]
public string LogStatus { get; set; }
public string FailureReason { get; set; }
}
Satu hal lagi saya akan mencari yang setara Formating.None
.
c#
serialization
json.net
.net-core-3.0
system.text.json
Kamran Shahid
sumber
sumber
Jawaban:
Anda mengajukan beberapa pertanyaan di sini:
Saya tidak dapat menemukan yang setara untuk
JObject.Parse(json);
Anda bisa menggunakan
JsonDocument
untuk mem - parsing dan memeriksa JSON apa saja, dimulai denganRootElement
. Elemen root adalah tipeJsonElement
yang mewakili nilai JSON (primitif atau tidak) dan sesuai dengan NewtonsoftJToken
.Tetapi perhatikan komentar dokumentasi ini :
Saat Anda perlu menggunakan dokumen di
JsonElement
luar masa pakainya, Anda harus mengkloningnya :Perhatikan juga bahwa
JsonDocument
saat ini hanya-baca dan tidak menyediakan API untuk membuat atau memodifikasi JSON. Ada masalah terbuka Masalah # 39922: Writable Json DOM yang melacak ini.Contoh penggunaan adalah sebagai berikut:
Juga apa yang akan menjadi atribut yang
JsonProperty
setara?Atribut yang dapat mengontrol
JsonSerializer
ditempatkan diSystem.Text.Json.Serialization
namespace dan mewarisi dari kelas dasar abstrakJsonAttribute
. Tidak sepertiJsonProperty
, tidak ada atribut omnibus yang dapat mengontrol semua aspek serialisasi properti. Sebaliknya ada atribut khusus untuk mengontrol aspek tertentu.Pada .NET Core 3 ini meliputi:
[JsonPropertyNameAttribute(string)]
:Ini adalah atribut yang ingin Anda gunakan untuk mengontrol nama serial dari
ResponseJson
kelas Anda :[JsonConverterAttribute(Type)]
:Perhatikan bahwa prioritas konverter yang didokumentasikan - Atribut pada properti, lalu koleksi Konverter dalam opsi, kemudian Atribut pada jenis - berbeda dari urutan yang didokumentasikan untuk konverter Newtonsoft , yang merupakan JsonConverter yang ditentukan oleh atribut pada anggota, kemudian JsonConverter didefinisikan oleh atribut pada kelas, dan akhirnya setiap konverter diteruskan ke JsonSerializer.
[JsonExtensionDataAttribute]
- sesuai dengan Newtonsoft[JsonExtensionData]
.[JsonIgnoreAttribute]
- sesuai dengan Newtonsoft[JsonIgnore]
.Saat menulis JSON via
Utf8JsonWriter
, indentasi dapat dikontrol dengan mengaturJsonWriterOptions.Indented
ketrue
ataufalse
.Saat membuat serial ke JSON via
JsonSerializer.Serialize
, lekukan dapat dikontrol dengan mengaturJsonSerializerOptions.WriteIndented
ketrue
ataufalse
.Demo biola di sini menunjukkan serialisasi dengan
JsonSerializer
dan penguraianJsonDocument
.sumber
Tautan ini akan membantu Anda, cuplikan yang saya salin di bawah.
https://devblogs.microsoft.com/dotnet/try-the-new-system-text-json-apis/
sumber
Anda dapat menginstal versi yang sama dengan paket lainnya
kemudian
sumber