سلسلة JSON للقائمة أو أي تنسيق آخر قابل للاستخدام في asp.net 2.0
سؤال
لدي واحدة JSON
الذي يأتي في string
شكل.أحتاج إلى تخزينه في key-pair
قيمة أو شيء من هذا القبيل.انا استخدم asp.net 2.0
ولا يمكن استخدام الطرف الثالث DLL
يحب Newtonsoft.Json.dll
.أعتقد أن الخيار الأخير سيكون للاستخدام regular expression
.
يمكن لأي شخص الرجاء مساعدتي في هذا؟
المحلول
إذا ذهبت إلى http://www.json.org/ وانظر إلى أسفل الصفحة، فهناك العشرات من مكتبات json معظمها مفتوحة المصدر، وأعتقد أنها تدرج 8 مكتبات لـ C#.إذا لم تتمكن من الرجوع إلى إحدى هذه المكتبات، فأعتقد أن أفضل رهان لك هو العثور على واحدة بترخيص متساهل وإضافة الكود ببساطة إلى مشروعك.
فكرة أخرى هي إلقاء نظرة على المخططات والقواعد وبناء الجملة http://www.json.org/ واكتب فقط المحلل اللغوي الخاص بك، ولكن التعبير العادي هو لا طريقة القيام بذلك.إذا كنت لا تعرف كيفية كتابة محلل، فيمكنك إلقاء نظرة على إحدى مكتبات json مفتوحة المصدر أو البدء بشيء أقل تعقيدًا مثل محلل CSV جيد، إليك ورقة تبدو جيدة جدًا: http://www.boyet.com/Articles/CsvParser.html
نصائح أخرى
من الممكن إجراء تسلسل JSON باستخدام JScript في C# إلى أزواج المفتاح/القيمة.تحتاج إلى إضافة بعض المراجع لمشروعك.إنها جزء من إطار عمل .NET، ما عليك سوى إضافة المراجع إلى مشروعك.انك سوف تحتاج:
- Microsoft.JSript
- Microsoft.Vsa
أولاً، الاستخدامات في الجزء العلوي من صفك:
using Microsoft.JScript;
using Microsoft.JScript.Vsa;
ثم يجب تهيئة المحرك الذي سيقوم بتنفيذ البرنامج النصي في مكان ما في "Page
'الكود الخلفي:
VsaEngine Engine = VsaEngine.CreateEngine();
بعد ذلك، ما عليك سوى إنشاء هذه الطريقة واستدعاءها عن طريق تمرير كائن JSON الخاص بك:
object EvalJScript(string JScript)
{
object result = null;
try
{
result = Microsoft.JScript.Eval.JScriptEvaluate(JScript, Engine);
}
catch (Exception ex)
{
return ex.Message;
}
return result;
}
نوع من object
تم إرجاعه (إذا تم تمرير JSON) وهو "JSObject
'.يمكنك الوصول إلى قيمها كأزواج مفتاح/قيمة.إقرأ ال وثائق MSDN لمزيد من التفاصيل حول هذا الكائن.
إليك مثال على استخدام الكود:
string json = "({Name:\"Dan\",Occupation:\"Developer\"})";
JSObject o = EvalJScript(json) as JSObject;
string name = o["Name"] as string; // Value of 'name' will be 'Dan'
هل يمكنك استخدام JScript.NET؟
إذا كان الأمر كذلك، فيجب أن يكون الأمر سهلاً بدرجة كافية باستخدام eval() - فما عليك سوى تكرار الكائنات التي تم إرجاعها وترجمتها إلى KeyValuePair أو أي شيء آخر
ستحتاج إلى استخدام jscript.net كرمز للغة، ولكن من الأفضل أن تظل الصفحات الأخرى في موقعك تستخدم لغة c# إذا كان هذا هو ما تفضله.
كما ذكرنا في التعليق السابق، ستحتاج إلى أن تكون على دراية بالجوانب والمخاطر الأمنية - استخدم التقييم فقط إذا كنت تثق في JSON الذي تقوم بتحليله!