parsing parse - تحليل JSON في JavaScript؟




online string (14)

إذا كنت تستخدم Dojo Toolkit :

require(["dojo/json"], function(JSON){
    JSON.parse('{"hello":"world"}', true);
});

هذا السؤال لديه بالفعل إجابة هنا:

أرغب في تحليل سلسلة JSON في JavaScript. الاستجابة شيء من هذا القبيل

var response = '{"result":true,"count":1}';

كيف يمكنني الحصول على result القيم count من هذا؟


دون استخدام مكتبة يمكنك استخدام eval - الوقت الوحيد الذي يجب عليك استخدامه. من الأسلم استخدام المكتبة على الرغم من ذلك.

على سبيل المثال ...

var response = '{"result":true , "count":1}';

var parsedJSON = eval('('+response+')');

var result=parsedJSON.result;
var count=parsedJSON.count;

alert('result:'+result+' count:'+count);

إذا تحب

var response = '{"result":true,"count":1}';
var JsonObject= JSON.parse(response);

يمكنك الوصول إلى عناصر JSON بواسطة JsonObject مع (.) نقطة:

JsonObject.result;
JsonObject.count;

كما ذكر العديد من المتصفحات الأخرى ، فإن معظم المتصفحات تدعم JSON.stringify و JSON.stringify .

الآن ، أود أيضًا أن أضيف أنه إذا كنت تستخدم AngularJS (التي أوصي بها بشدة) ، فإنه يوفر أيضًا الوظائف التي تحتاجها:

var myJson = '{"result": true, "count": 1}';
var obj = angular.fromJson(myJson);//equivalent to JSON.parse(myJson)
var backToJson = angular.toJson(obj);//equivalent to JSON.stringify(obj)

أردت فقط إضافة الأشياء حول AngularJS لتوفير خيار آخر. لاحظ أن AngularJS لا تدعم بشكل رسمي Internet Explorer 8 (والإصدارات الأقدم ، لهذا الأمر) ، ولكن من خلال التجربة ، يبدو أن معظم الأشياء تعمل بشكل جيد.


إذا قمت بتمرير متغير سلسلة (سلسلة JSON جيدة التكوين) إلى JSON.parse من MVCViewbag الذي يحتوي على doublequote ، '' '، كعلامات اقتباس ، فستحتاج إلى jsonstring قبل jsonstring ( jsonstring )

    var jsonstring = '@ViewBag.jsonstring';
    jsonstring = jsonstring.replace(/"/g, '"');  

يمكنك استخدام وظيفة eval كما في بعض الإجابات الأخرى. (لا تنس الأقواس الإضافية.) ستعرف لماذا عند التعمق أكثر ، أو ببساطة استخدام وظيفة jQuery parseJSON :

var response = '{"result":true , "count":1}'; 
var parsedJSON = $.parseJSON(response);

أو

يمكنك استخدام هذا الرمز أدناه.

var response = '{"result":true , "count":1}';
var jsonObject = JSON.parse(response);

ويمكنك الوصول إلى الحقول باستخدام jsonObject.result و jsonObject.count .


بادئ ذي بدء ، يجب عليك التأكد من صحة كود JSON.

بعد ذلك ، أوصي باستخدام مكتبة جافا سكريبت مثل jQuery أو Prototype إذا كنت تستطيع ذلك لأن هذه الأشياء يتم التعامل معها بشكل جيد في تلك المكتبات.

من ناحية أخرى ، إذا كنت لا ترغب في استخدام مكتبة ويمكنك ضمان صحة كائن JSON ، فإنني ببساطة أقوم بحفظ السلسلة في وظيفة مجهولة واستخدم الدالة eval.

لا ينصح بهذا إذا كنت تحصل على كائن JSON من مصدر آخر غير موثوق به تمامًا نظرًا لأن وظيفة eval تسمح لكود متمرد إذا شئت.

هنا مثال على استخدام وظيفة eval:

var strJSON = '{"result":true,"count":1}';
var objJSON = eval("(function(){return " + strJSON + ";})()");
alert(objJSON.result);
alert(objJSON.count);

إذا كنت تتحكم في المتصفح الذي تستخدمه أو إذا كنت لا تشعر بالقلق من الأشخاص باستخدام متصفح قديم ، فيمكنك دائمًا استخدام طريقة JSON.parse.

هذا هو حقا الحل الأمثل للمستقبل.


يحول JSON.parse () أي JSON String إلى الوظيفة ، إلى كائن JSON.

لفهم أفضل ، اضغط F12 لفتح "فحص عنصر المستعرض" ، وانتقل إلى وحدة التحكم لكتابة الأوامر التالية:

var response = '{"result":true,"count":1}'; // Sample JSON object (string form)
JSON.parse(response); // Converts passed string to a JSON object.

الآن قم بتشغيل الأمر:

console.log(JSON.parse(response));

ستحصل على الناتج باعتباره الهدف {result: true ، العدد: 1}.

من أجل استخدام هذا الكائن ، يمكنك تعيينه للمتغير ، دعنا نقول obj :

var obj = JSON.parse(response);

الآن باستخدام obj و dot (.) يمكنك الوصول إلى خصائص كائن JSON.

حاول تشغيل الأمر

console.log(obj.result);

إذا كنت تستخدم jQuery ، فهي بسيطة:

var response = '{"result":true,"count":1}';
var obj = $.parseJSON(response);
alert(obj.result); //true
alert(obj.count); //1

طريقة سهلة للقيام بذلك:

var data = '{"result":true,"count":1}';
var json = eval("[" +data+ "]")[0]; // ;)

معظم المتصفحات تدعم JSON.parse() ، والذي تم تعريفه في ECMA-262 5th Edition (المواصفات التي تعتمد عليها JavaScript). استخدامه بسيط:

var json = '{"result":true,"count":1}',
    obj = JSON.parse(json);

alert(obj.count);

للمتصفحات التي لا يمكنك تنفيذها باستخدام json2.js .

كما هو مذكور في التعليقات ، إذا كنت تستخدم jQuery بالفعل ، فهناك وظيفة $.parseJSON إذا كانت متاحة أو شكلاً من أشكال eval في المتصفحات القديمة. ومع ذلك ، يقوم هذا بإجراء فحوصات إضافية غير ضرورية يتم إجراؤها أيضًا بواسطة JSON.parse ، لذا للحصول على أفضل أداء مستدير ، أوصي باستخدامه كما يلي:

var json = '{"result":true,"count":1}',
    obj = JSON && JSON.parse(json) || $.parseJSON(json);

سيضمن لك ذلك استخدام JSON.parse الأصلي على الفور ، بدلاً من استخدام jQuery لفحوص سلامة العقل على السلسلة قبل تمريرها إلى دالة التوزيع الأصلية.


أسهل طريقة باستخدام طريقة parse() :

var response = '{"a":true,"b":1}';
var JsonObject= JSON.parse(response);

هذا مثال على كيفية الحصول على القيم:

var myResponseResult = JsonObject.a;
var myResponseCount = JsonObject.b;

إذا كنت تحصل على هذا من موقع خارجي ، فقد يكون من المفيد استخدام getJSON في jQuery. إذا كانت هناك قائمة ، يمكنك التكرار من خلالها مع $ .each

$.getJSON(url, function (json) {
    alert(json.result);
    $.each(json.list, function (i, fb) {
        alert(fb.result);
    });
});

إن المستخدمين codelogic و harley صحيحين ، ولكن ضع في اعتبارك إذا كنت تعرف أن السلسلة عبارة عن عدد صحيح (على سبيل المثال ، 545) يمكنك الاتصال بـ int ("545") دون الصب الأول للتعويم.

إذا كانت السلاسل الخاصة بك في قائمة ، فيمكنك استخدام وظيفة الخريطة أيضًا.

>>> x = ["545.0", "545.6", "999.2"]
>>> map(float, x)
[545.0, 545.60000000000002, 999.20000000000005]
>>>

من الجيد فقط إذا كانوا من نفس النوع.







javascript json parsing