Chuyển đến nội dung chính

Serialize và Deserialize từ .Net Core 3.0

Các dữ liệu JSON được sử dụng rất thường xuyên trong ứng dụng web, đặc biệt khi cần truyền dữ liệu thông qua ajax. Với Python, Javascript,... thì việc xử lý dữ liệu sẽ dễ dàng hơn. Nếu bạn sử dụng .NET thì bạn phải chuyển đối tượng JSON thành Object hoặc ngược lại để gởi request đi.

Với sự ra đời của ASP.NET Core 3.0, thư viện JSON mặc định đã được thay đổi từ Newtonsoft.Json thành System.Text.Json. Trong bài đăng này, chúng ta sẽ lướt qua 1 số tính năng cơ bản Text Json.

Các thao tác cơ bản

Bạn tạo project .NET Core 3.0 Console Application. Sau đó thêm namespace:

using System.Text.Json;

Khai báo file data.json

{
  "myString": "Hello World",
  "myInt": 123,
  "myBoolean": true,
  "myDecimal": 12.3,
  "myDateTime1": "2019-09-23T10:10:00",
  "myDateTime2": "2019-09-23",
  "myStringList": ["apple", "banana", "orange"],
  "myDictionary": {
    "person1": {
      "id": 201,
      "name": "C#"
    },
    "person2": {
      "id": 302,
      "name": "F#"
    }
  },
  "myAnotherModel": {
    "myString": "Hi there",
    "myInt": 456
  }
}

Sau đó bạn khai báo Model:

public class MyModel
{
    public string MyString { get; set; }
    public int MyInt { get; set; }
    public bool MyBoolean { get; set; }
    public decimal MyDecimal { get; set; }
    public DateTime MyDateTime1 { get; set; }
    public DateTime MyDateTime2 { get; set; }
    public List<string> MyStringList { get; set; }
    public Dictionary<string, Person> MyDictionary { get; set; }
    public MyModel MyAnotherModel { get; set; }
}

public class Person
{
    public int Id { get; set; }
    public string Name { get; set; }
}
Trong hàm Main(), bạn thêm đoạn code sau:
var options = new JsonSerializerOptions
{
    PropertyNamingPolicy = JsonNamingPolicy.CamelCase,
    WriteIndented = true
};

var jsonString = File.ReadAllText("my-model.json");
var jsonModel = JsonSerializer.Deserialize<MyModel>(jsonString, options);
var modelJson = JsonSerializer.Serialize(jsonModel, options);
Console.WriteLine(modelJson);
Thuộc tính: JsonNamingPolicy.CamelCase báo cho trình biên dịch sẽ không phân biệt chữ hoa hay chữ thường. Ví dụ MyProperty trong C# sẽ tương đương với myProperty trong JSON và ngược lại.
WriteIndented = true, có nghĩa là chuỗi JSON sẽ được format khi in ra.

Một số trường hợp đặc biệt

Có một số trường hợp mà tên biến trong C# và JSON khác nhau, lúc này bạn sẽ sử dụng attribute JsonPropertyName
Ví dụ: Chúng ta có thuộc tính _full_name trong file JSON nhưng trong C# object tên là name
public class Person
{
	public int Id { get; set; }
	[JsonPropertyName("_full_name")]
	public string Name { get; set; }
}
Bạn lưu ý là chuỗi JSON sẽ sử dụng dấu nháy kép thay vì dấu nháy đơn. Nếu dữ liệu sử dụng dấu nháy đơn, bạn dùng đoạn code này để sửa lại:
var tmp = json.Replace("'", "\"");

Tham khảo

https://morioh.com/p/d883d80f7bdb

Nhatkyhoctap's blog

Nhận xét

Bài đăng phổ biến từ blog này

[ASP.NET MVC] Authentication và Authorize

Một trong những vấn đề bảo mật cơ bản nhất là đảm bảo những người dùng hợp lệ truy cập vào hệ thống. ASP.NET đưa ra 2 khái niệm: Authentication và Authorize Authentication xác nhận bạn là ai. Ví dụ: Bạn có thể đăng nhập vào hệ thống bằng username và password hoặc bằng ssh. Authorization xác nhận những gì bạn có thể làm. Ví dụ: Bạn được phép truy cập vào website, đăng thông tin lên diễn đàn nhưng bạn không được phép truy cập vào trang mod và admin.

ASP.NET MVC: Cơ bản về Validation

Validation (chứng thực) là một tính năng quan trọng trong ASP.NET MVC và được phát triển trong một thời gian dài. Validation vắng mặt trong phiên bản đầu tiên của asp.net mvc và thật khó để tích hợp 1 framework validation của một bên thứ 3 vì không có khả năng mở rộng. ASP.NET MVC2 đã hỗ trợ framework validation do Microsoft phát triển, tên là Data Annotations. Và trong phiên bản 3, framework validation đã hỗ trợ tốt hơn việc xác thực phía máy khách, và đây là một xu hướng của việc phát triển ứng dụng web ngày nay.

Tổng hợp một số kiến thức lập trình về Amibroker

Giới thiệu về Amibroker Amibroker theo developer Tomasz Janeczko được xây dựng dựa trên ngôn ngữ C. Vì vậy bộ code Amibroker Formula Language sử dụng có syntax khá tương đồng với C, ví dụ như câu lệnh #include để import hay cách gói các object, hàm trong các block {} và kết thúc câu lệnh bằng dấu “;”. AFL trong Amibroker là ngôn ngữ xử lý mảng (an array processing language). Nó hoạt động dựa trên các mảng (các dòng/vector) số liệu, khá giống với cách hoạt động của spreadsheet trên excel.