هل يمكن أن يكون الصفيف من المستوى الأعلى json-text؟
سؤال
لكل نقاش في هذا المنشور: JSON-Conversion-in-JavaScript
المحلول
نعم ، صفيف قانوني مثل json-text من المستوى الأعلى.
هناك ثلاث وثائق قياسية تحدد JSON: RFC 4627, RFC 7159 (الذي يفترض RFC 4627) ، و ECMA-404. فهي تختلف في أي عناصر المستوى الأعلى تسمح بها ، ولكن جميعها تسمح لكائن أو صفيف كعنصر المستوى الأعلى.
- RFC 4627: كائن أو صفيف.
"نص JSON هو كائن أو صفيف تسلسلي." - RFC 7159: أي قيمة JSON.
"نص JSON هو قيمة تسلسلية." - ECMA-404: أي قيمة JSON.
"نص JSON هو سلسلة من الرموز المميزة التي تم تشكيلها من نقاط رمز Unicode تتوافق مع قواعد القيمة JSON."
نصائح أخرى
نعم, ، ولكن يجب أن تفكر في جعل جذر كائن بدلاً من ذلك في بعض السيناريوهات ، بسبب اختطاف json. هذا هو ثغرة أمنية للكشف عن المعلومات بناءً على تجاوز مُنشئ الصفيف في JavaScript.
هذا من مواصفات ECMASCRIPT.
JSONText : JSONValue JSONValue : JSONNullLiteral JSONBooleanLiteral JSONObject JSONArray JSONString JSONNumber
هناك بعض الالتباس ، الذي شوهد في التعليقات الأخرى. يتيح نوع الوسائط "Application/JSON" كائنًا أو صفيفًا فقط في المستوى الأعلى لـ JSON-Text ، لكل JSON RFC. ومع ذلك ، بالنسبة إلى المحلل ، فإن أي قيمة JSON مقبولة ، كما هو موضح في مواصفات ECMASCRIPT.