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?

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.


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


Apakah Anda tahu cara deserialize json ke tipe dinamis?
zolty13
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.