JSON serialization / deserialization ใน ASP.Net Core


132

เนื่องจากไม่มีJavaScriptSerializerการใช้งานเนทีฟใดที่สามารถใช้จัดการสิ่งนี้ได้

ฉันสังเกตเห็นJsonResultและฉันสามารถจัดรูปแบบข้อมูลเป็น JSON ด้วยสิ่งนี้ แต่ฉันจะ deserialize ได้อย่างไร

หรือบางทีฉันขาดการอ้างอิงบางอย่างในproject.json?

คำตอบ:


235

คุณสามารถใช้Newtonsoft.Jsonมันขึ้นอยู่กับMicrosoft.AspNet.Mvc.ModelBindingซึ่งเป็นที่พึ่งพาของMicrosoft.AspNet.Mvc. ดังนั้นคุณไม่จำเป็นต้องเพิ่มการอ้างอิงใน project.json ของคุณ

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

หมายเหตุการใช้ตัวควบคุม WebAPI คุณไม่จำเป็นต้องจัดการกับ JSON

อัปเดต ASP.Net Core 3.0

Json.NETถูกลบออกจากกรอบงานที่ใช้ร่วมกัน ASP.NET Core 3.0

คุณสามารถใช้เลเยอร์ซีเรียลไลเซอร์JSON ใหม่ที่ด้านบนของประสิทธิภาพสูงUtf8JsonReaderและUtf8JsonWriter. มัน deserialize อ็อบเจ็กต์จาก JSON และทำให้อ็อบเจกต์ต่อเนื่องเป็น JSON การจัดสรรหน่วยความจำจะน้อยที่สุดและรวมถึงการสนับสนุนสำหรับการอ่านและเขียน JSON พร้อมสตรีมแบบอะซิงโครนัส

ในการเริ่มต้นให้ใช้JsonSerializerคลาสในSystem.Text.Json.Serializationเนมสเปซ ดูเอกสารสำหรับข้อมูลและตัวอย่าง

วิธีใช้ Json.NET ในโครงการ ASP.NET Core 3.0:

  • เพิ่มการอ้างอิงแพ็คเกจไปยังMicrosoft.AspNetCore.Mvc.NewtonsoftJson
  • อัปเดต ConfigureServices เพื่อเรียก AddNewtonsoftJson ()
    services.AddMvc()
        .AddNewtonsoftJson();

อ่านการสนับสนุน Json.NETในMigrate จาก ASP.NET Core 2.2 ถึง 3.0 Preview 2สำหรับข้อมูลเพิ่มเติม


ตอนนี้ AspNetCore.Mcv ไม่มีการพึ่งพา Newtonsoft.JSON Microsoft.AspNet.Mvc.Formatters.json แอสเซมบลีที่ใช้สำหรับการทำให้เป็นอนุกรม
Roman Pokrovskij

9
@RomanPokrovskij ผิด: Microsoft.AspNetCore.Mvc.Formatters.Jsonมีการพึ่งพาMicrosoft.AspNetCore.JsonPatchซึ่งมีการพึ่งพาNewtonsoft.Json9.0.1 nuget.org/packages/Microsoft.AspNetCore.Mvc.Formatters.Json , nuget.org/packages/Microsoft.AspNetCore.JsonPatch
agua จากดาวอังคาร

คุณยังสามารถใช้ JsonConvert.DeserializeObject <YourClass> (json) เพื่อ deserialize เป็นคลาสเฉพาะ
Nuno Ribeiro

14

. net core

using System.Text.Json;

เพื่อทำให้เป็นอนุกรม

var jsonStr = JsonSerializer.Serialize(MyObject)

deserialize

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

สำหรับข้อมูลเพิ่มเติมเกี่ยวกับการยกเว้นคุณสมบัติและค่าว่างโปรดดูที่ ด้านนี้ของ Microsoft


คุณรู้วิธี deserialize json เป็นประเภทไดนามิกหรือไม่?
zolty13
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.