هل هناك طريقة مدمجة في .Net AJAX لإجراء تسلسل كائن يدويًا إلى سلسلة JSON؟
-
09-06-2019 - |
سؤال
لقد وجدت ScriptingJsonSerializationSection
لكنني لست متأكدا من كيفية استخدامه.يمكنني كتابة دالة لتحويل الكائن إلى سلسلة JSON يدويًا، ولكن نظرًا لأن .Net يمكنه القيام بذلك بسرعة باستخدام <System.Web.Services.WebMethod()>
و <System.Web.Script.Services.ScriptMethod()>
السمات لذلك يجب أن تكون هناك طريقة مضمنة أفتقدها.
ملاحظة:باستخدام Asp.Net 2.0 وVB.Net - أضع هذا في العلامات ولكن أعتقد أن الناس فاتتهم.
المحلول
هذا ينبغي أن تفعل خدعة
Dim jsonSerialiser As New System.Web.Script.Serialization.JavaScriptSerializer
Dim jsonString as String = jsonSerialiser.Serialize(yourObject)
نصائح أخرى
أعتقد أن ما تبحث عنه هو هذه الفئة:
System.ServiceModel.Web.DataContractJsonSerializer
إليك مثال من ريك ستراهل: DataContractJsonSerializer في .NET 3.5
نظرًا لأنه تم إهمال فئة JavaScriptSerializer من الناحية الفنية، على ما أعتقد DataContractJsonSerializer هي الطريقة المفضلة إذا كنت تستخدم الإصدار 3.0+.
حسنًا، أنا أستخدم حاليًا طرق الامتداد التالية لإجراء تسلسل وإلغاء تسلسل الكائنات:
using System.Web.Script.Serialization;
public static string ToJSON(this object objectToSerialize)
{
JavaScriptSerializer jss = new JavaScriptSerializer();
return jss.Serialize(objectToSerialize);
}
/// <typeparam name="T">The type we are deserializing the JSON to.</typeparam>
public static T FromJSON<T>(this string json)
{
JavaScriptSerializer jss = new JavaScriptSerializer();
return jss.Deserialize<T>(json);
}
أستخدم هذا كثيرًا - كن حذرًا، هذا التنفيذ ساذج بعض الشيء (على سبيل المثال.هناك بعض المشاكل المحتملة فيه، اعتمادًا على ما تقوم بإجراء تسلسل له وكيفية استخدامه على العميل، خاصة مع DateTimes).
في مجموعة System.Web.Extensions، الإصدار 3.5.0.0، يوجد JavaScriptSerializer الطبقة التي يجب أن تتعامل مع ما تريد.
يحاول
System.Web.Script.Serialization.JavaScriptSerializer
أو الخروج JSON.org هناك قائمة كاملة من المكتبات المكتوبة للقيام بما تريده بالضبط.