Tuần tự hóa / giải tuần tự hóa JSON trong Lõi ASP.Net


131

Vì không có JavaScriptSerializer, nên thực hiện bản địa nào để xử lý việc này?

Tôi nhận thấy JsonResultvà tôi có thể định dạng dữ liệu thành JSON bằng cái này, nhưng làm cách nào để giải tuần tự hóa?

Hoặc có thể tôi đang thiếu một số phụ thuộc trong project.json?

Câu trả lời:


235

Bạn có thể sử dụng Newtonsoft.Json, đó là một phụ thuộc trong Microsoft.AspNet.Mvc.ModelBindingđó là một phụ thuộc Microsoft.AspNet.Mvc. Vì vậy, bạn không cần thêm một phụ thuộc trong project.json của bạn.

#using Newtonsoft.Json
....
JsonConvert.DeserializeObject(json);

Lưu ý, bằng cách sử dụng bộ điều khiển WebAPI, bạn không cần phải xử lý JSON.

CẬP NHẬT Lõi ASP.Net 3.0

Json.NET đã bị xóa khỏi khung chia sẻ ASP.NET Core 3.0.

Bạn có thể sử dụng các lớp tuần tự hóa JSON mới trên đầu hiệu năng cao Utf8JsonReaderUtf8JsonWriter. Nó giải tuần tự hóa các đối tượng từ JSON và tuần tự hóa các đối tượng thành JSON. Phân bổ bộ nhớ được giữ ở mức tối thiểu và bao gồm hỗ trợ đọc và ghi JSON với Stream không đồng bộ.

Để bắt đầu, sử dụng JsonSerializerlớp trong System.Text.Json.Serializationkhông gian tên. Xem tài liệu để biết thông tin và mẫu.

Để sử dụng Json.NET trong dự án ASP.NET Core 3.0:

    services.AddMvc()
        .AddNewtonsoftJson();

Đọc hỗ trợ Json.NET trong Di chuyển từ ASP.NET Core 2.2 đến 3.0 Preview 2 để biết thêm thông tin.


Bây giờ AspNetCore.Mcv không có sự phụ thuộc vào Newtonsoft.JSON. Microsoft.AspNet.Mvc.Formatters.Json được sử dụng để tuần tự hóa.
La Mã Pokrovskij

9
@RomanPokrovskij, sai,: Microsoft.AspNetCore.Mvc.Formatters.Jsoncó một phụ thuộc vào Microsoft.AspNetCore.JsonPatchtrong đó có một phụ thuộc vào Newtonsoft.Json9.0.1 nuget.org/packages/Microsoft.AspNetCore.Mvc.Formatters.Json , nuget.org/packages/Microsoft.AspNetCore.JsonPatch
agua từ mars

Bạn cũng có thể sử dụng JsonConvert.DeserializeObject <YourClass> (json) để giải tuần tự hóa cho một lớp cụ thể.
Nuno Ribeiro

13

lõi .net

using System.Text.Json;

Để tuần tự hóa

var jsonStr = JsonSerializer.Serialize(MyObject)

Giải trừ

var weatherForecast = JsonSerializer.Deserialize<MyObject>(jsonStr);

Để biết thêm thông tin về việc loại trừ các thuộc tính và null, hãy xem bên Microsoft này


Bạn có biết làm thế nào để khử lưu huỳnh json thành kiểu động?
zolty13
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.