ไม่พบ JavaScriptSerializer ใน. Net 4.0


297

ฉันดูเหมือนจะไม่พบJavaScriptSerializerวัตถุหรือSystem.Web.Script.Serializationเนมสเปซภายใน Visual Studio 2010 ฉันต้องทำให้บางสิ่งเป็นอันดับต่อ JSON ฉันควรใช้อะไร

และใช่ฉันรวมอยู่ในSystem.Web.Extensions(ใน System.Web.Extensions.dll) ภายในโครงการแล้ว ทำไมฉันถึงช็อคล่ะ?

  • ฉันรู้ว่าSystem.Web.Extensionsถูกทำเครื่องหมายว่าล้าสมัยใน 3.5

5
ฉันมีปัญหาเดียวกันและฉันต้องบอกว่าคำตอบนั้นไร้ประโยชน์ ฉันกำลังกำหนดเป้าหมาย ".NET Framework 4" ไม่ใช่ "โปรไฟล์ลูกค้า. NET 4" ฉันได้อ้างอิงแอสเซมบลี System.Web.Extensions แต่เมื่อฉันลองใช้เนมสเปซ System.Web.Script.Serialization VS 2010 บอกฉันว่า "สคริปต์ประเภทหรือเนมสเปซไม่มีอยู่ในเนมสเปซ System.Web" มีใครพบวิธีแก้ปัญหาที่แท้จริงสำหรับเรื่องนี้? ฉันนิ่งงัน!
twakjaco

โพสต์ที่เกี่ยวข้องที่นี่
RBT

คำตอบ:


523

ตรวจสอบว่าคุณรวมรุ่น. net 4 หรือไม่System.Web.Extensions- มีรุ่น 3.5 เช่นกัน แต่ฉันไม่คิดว่าใช้งานได้หรือไม่

ขั้นตอนเหล่านี้ใช้ได้สำหรับฉัน:

  1. สร้างแอปพลิเคชันคอนโซลใหม่
  2. เปลี่ยนเป้าหมายเป็น. net 4 แทน Client Profile
  3. เพิ่มการอ้างอิงถึงSystem.Web.Extensions(4.0)
  4. มีสิทธิ์เข้าถึงJavaScriptSerializerใน Program.cs ทันที :-)

ใน vb.net อย่าลืม "new" และ () เช่น: Dim JsonConvert As New JavaScriptSerializer ()
zokaee hamid

124
  1. คลิกขวาReferencesและทำAdd Referenceจากนั้นเลือกAssemblies->FrameworkSystem.Web.Extensions
  2. ตอนนี้คุณควรจะสามารถเพิ่มสิ่งต่อไปนี้ในไฟล์คลาสของคุณ:
    using System.Web.Script.Serialization;

สมบูรณ์แบบฉันลืมที่จะทำอะไรเช่นขอบคุณขอบคุณ
Khalil Liraqui

ที่ดี! คำอธิบายโดยละเอียด
charulatha krishnamoorthy

41

จากผลการค้นหาแรกบน google:

http://msdn.microsoft.com/en-us/library/system.web.script.serialization.javascriptserializer.aspx

คลาส JavaScriptSerializer

จัดเตรียมฟังก์ชันการทำให้เป็นอนุกรมและ deserialization สำหรับแอปพลิเคชันที่เปิดใช้งาน AJAX

ลำดับชั้นการสืบทอด

System.Object

System.Web.Script.Serialization.JavaScriptSerializer

Namespace: System.Web.Script.Serialization

Assembly: System.Web.Extensions (ใน System.Web.Extensions.dll)

ดังนั้นรวมSystem.Web.Extensions.dllเป็นข้อมูลอ้างอิง


3
สองปีต่อมาในโครงการที่ไม่เกี่ยวข้องทั้งหมด: มันยังช่วยถ้าคุณใช้ประโยชน์อย่างถูกต้อง>.> (ไม่ใช่ JavascriptSerializer)
neminem

25

ฉันใช้ Visual Studio 2015 และในที่สุดก็วิ่งข้ามโพสต์นี้

ใช่เพื่อที่จะใช้

JavaScriptSerializer json = new JavaScriptSerializer();

คุณต้องคลิกขวาที่การอ้างอิงและภายใต้แอสเซมบลี -> เลือกกรอบงาน

System.Web.Extensions

จากนั้นเพิ่มในการอ้างอิงของคุณ

using System.Web.Script.Serialization;

15

นี่คือวิธีการทำให้ JavaScriptSerializer พร้อมใช้งานในแอปพลิเคชันของคุณกำหนดเป้าหมาย.NET 4.0(เต็ม)

using System.Web.Script.Serialization;

สิ่งนี้จะช่วยให้คุณสร้างJavaScriptSerializerวัตถุใหม่!


ไม่มีสคริปต์
KansaiRobot


10

คุณกำหนดเป้าหมายกรอบงาน. NET 4 หรือส่วนกำหนดค่าไคลเอนต์. NET 4 หรือไม่

หากคุณกำหนดเป้าหมายหลังคุณจะไม่พบคลาสนั้น คุณอาจพลาดการอ้างอิงซึ่งอาจเป็นไปได้ว่า dll ส่วนขยาย


.NET Framework 4 และฉันมี 'System.Web.Extensions' รวมอยู่ในโครงการแล้ว
Prisoner ZERO

นี่เป็นโครงการที่คุณอัพเกรดจาก. net รุ่นก่อนหน้าหรือไม่
Christopher Currens

ฉันมีปัญหานี้กับโครงการที่ฉันอัพเกรด ดูเหมือนว่าจะไม่ได้รับการแก้ไขโดยใช้เวอร์ชัน. net ดั้งเดิม (3.5) แม้ว่า ...
user1003221

9

สำหรับผู้ที่ดูเหมือนจะทำตามคำตอบข้างต้น แต่ยังคงมีปัญหา (เช่นดูความคิดเห็นแรกในคำถามของผู้โพสต์):

คุณอาจทำงานในการแก้ปัญหาด้วยหลายโครงการ โครงการที่คุณดูเหมือนจะทำงานในการอ้างอิงโครงการอื่น ๆ แต่จริงๆแล้วคุณกำลังแก้ไขไฟล์จากหนึ่งในโครงการอื่น ๆ ตัวอย่างเช่น:

  • โครงการอ้างอิง System.Web.Extensions
  • โครงการ A อ้างอิงโครงการ B

แต่ถ้าไฟล์ที่คุณกำลังแก้ไขเพื่อใช้System.Web.Script.Serializationอยู่ในโครงการ B คุณจะต้องเพิ่มการอ้างอิงไปยังSystem.Web.Extensionในโครงการ B เช่นกัน


8

คุณรวมถึงการอ้างอิงถึงSystem.Web.Extensions? ถ้าคุณคลิกที่ลิงค์แรกมันบอกว่าประกอบมันอยู่ใน


ในกรณีนั้นอาจตรวจสอบคำตอบของ @ Christopher
Davy8

5

คุณต้องเพิ่มการอ้างอิงไปยังโครงการ

ในชุดประกอบมี System.Web.Extensions เพิ่มว่า

เมื่อเสร็จแล้วใส่:

    using System.Web;
    using System.Web.Script;
    using System.Web.Script.Serialization;

ที่ทำงานให้ฉัน


3

คุณก็รู้ว่าฉันใช้ Visual Studio 2013 และมีปัญหาเดียวกันจนกระทั่งฉันใช้คุณสมบัติโครงการเพื่อเปลี่ยนเป็น 3.5 เฟรมเวิร์กและกลับไปเป็น 4.5 นี้ด้วยเหตุผลบางอย่างที่ลงทะเบียน .dll ได้อย่างถูกต้องและฉันสามารถใช้System.Web.Extensions

ป้อนคำอธิบายรูปภาพที่นี่

ป้อนคำอธิบายรูปภาพที่นี่


3

คุณสามารถใช้ตัวเลือกอื่นซึ่งก็คือ Newtonsoft.Json คุณสามารถติดตั้งได้จาก NuGet Package Manager

เครื่องมือ >> Nuget Package Manager >> Package Manager Console โดยใช้คำสั่ง

Install-Package Newtonsoft.Json

หรือ

โดยใช้ GUI ที่เครื่องมือ >> ผู้จัดการแพ็กเกจ Nuget >> จัดการแพคเกจ NuGet สำหรับโซลูชัน ...

ป้อนคำอธิบายรูปภาพที่นี่


หมายเหตุว่านี่คือไมโครซอฟท์เสนอแนะเอกสาร บน. Net Core, Microsoft ไม่ได้เสนอ JavaScriptSerializer (หรือส่วนที่เหลือของ System.Web.Extensions)
Brian
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.