Serialisasi / deserialisasi JSON di ASP.Net Core

131

Karena tidak ada JavaScriptSerializer, implementasi asli apa yang dapat digunakan untuk menangani ini?

Saya perhatikan JsonResultdan saya bisa memformat data ke JSON dengan ini, tetapi bagaimana cara deserialize?

Atau mungkin saya kehilangan beberapa dependensi project.json?

Jakub Wisniewski
sumber

Jawaban:

235

Anda dapat menggunakan Newtonsoft.Json, itu adalah ketergantungan Microsoft.AspNet.Mvc.ModelBindingyang merupakan ketergantungan Microsoft.AspNet.Mvc. Jadi, Anda tidak perlu menambahkan ketergantungan pada project.json Anda.

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

Catatan, menggunakan pengontrol WebAPI Anda tidak perlu berurusan dengan JSON.

MEMPERBARUI ASP.Net Core 3.0

Json.NET telah dihapus dari kerangka kerja bersama ASP.NET Core 3.0.

Anda dapat menggunakan lapisan serializer JSON baru di atas kinerja tinggi Utf8JsonReaderdan Utf8JsonWriter. Ini menghilangkan objek dari JSON dan membuat serialisasi objek ke JSON. Alokasi memori dijaga minimal dan mencakup dukungan untuk membaca dan menulis JSON dengan Stream secara tidak sinkron.

Untuk memulai, gunakan JsonSerializerkelas di System.Text.Json.Serializationnamespace. Lihat dokumentasi untuk informasi dan sampel.

Untuk menggunakan Json.NET dalam proyek ASP.NET Core 3.0:

    services.AddMvc()
        .AddNewtonsoftJson();

Baca dukungan Json.NET di Migrasikan dari ASP.NET Core 2.2 ke 3.0 Pratinjau 2 untuk informasi lebih lanjut.

agua dari mars
sumber
Sekarang AspNetCore.Mcv tidak memiliki ketergantungan pada Newtonsoft.JSON. Microsoft.AspNet.Mvc.Formatters.Json assembly digunakan untuk serialisasi.
Roman Pokrovskij
9
@RomanPokrovskij, salah,: Microsoft.AspNetCore.Mvc.Formatters.Jsonmemiliki ketergantungan Microsoft.AspNetCore.JsonPatchyang memiliki ketergantungan pada Newtonsoft.Json9.0.1 nuget.org/packages/Microsoft.AspNetCore.Mvc.Formatters.Json , nuget.org/packages/Microsoft.AspNetCore.JsonPatch
agua from mars
Anda juga dapat menggunakan JsonConvert.DeserializeObject <YourClass> (json) untuk deserialize ke kelas tertentu.
Nuno Ribeiro
14

inti bersih

using System.Text.Json;

Untuk membuat cerita bersambung

var jsonStr = JsonSerializer.Serialize(MyObject)

Deserialize

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

Untuk informasi lebih lanjut tentang mengecualikan properti dan null, lihat sisi Microsoft ini

NoloMokgosi
sumber
Apakah Anda tahu cara deserialize json ke tipe dinamis?
zolty13