System.Text.Json
.NET core 3.0 มาพร้อมกับSystem.Text.Json
built-in ซึ่งหมายความว่าคุณสามารถ deserialize / serialize JSON โดยไม่ต้องใช้ไลบรารีบุคคลที่สาม
ในการทำให้คลาสของคุณเป็นสตริง JSON:
var json = JsonSerializer.Serialize(order);
ในการ deserialize JSON ให้เป็นคลาสที่พิมพ์อย่างมาก:
var order = JsonSerializer.Deserialize<Order>(json);
ดังนั้นหากคุณมีชั้นเรียนดังต่อไปนี้:
public class Order
{
public int Id { get; set; }
public string OrderNumber { get; set; }
public decimal Balance { get; set; }
public DateTime Opened { get; set; }
}
var json = JsonSerializer.Serialize(order);
// creates JSON ==>
{
"id": 123456,
"orderNumber": "ABC-123-456",
"balance": 9876.54,
"opened": "2019-10-21T23:47:16.85",
};
var order = JsonSerializer.Deserialize<Order>(json);
// ==> creates the above class
สิ่งหนึ่งที่ควรทราบคือSystem.Text.Json
ไม่ได้จัดการcamelCase
คุณสมบัติ JSON โดยอัตโนมัติเมื่อใช้รหัสของคุณเอง (แต่จะทำเช่นนั้นเมื่อใช้การร้องขอ MVC / WebAPI และตัวยึดโมเดล)
ในการแก้ไขปัญหานี้คุณต้องผ่านJsonSerializerOptions
เป็นพารามิเตอร์
JsonSerializerOptions options = new JsonSerializerOptions
{
PropertyNamingPolicy = JsonNamingPolicy.CamelCase, // set camelCase
WriteIndented = true // write pretty json
};
// pass options to serializer
var json = JsonSerializer.Serialize(order, options);
// pass options to deserializer
var order = JsonSerializer.Deserialize<Order>(json, options);
System.Text.Jsonยังมีให้สำหรับ. Net Framework และ. Net Standard เป็นแพ็คเกจ Nu-get System.Text.Json