JSON سلسلة من وجوه JS
-
20-09-2019 - |
سؤال
وأنا باستخدام الكائن JS لإنشاء الرسوم البيانية مع جوجل التصور. أحاول أن تصميم مصدر البيانات. في البداية، أنا خلق كائن JS من جانب العميل.
var JSONObject = {
cols: [{id: 'date', label: 'Date', type: 'date'},
{id: 'soldpencils', label: 'Sold Pencils', type: 'number'},
{id: 'soldpens', label: 'Sold Pens', type: 'number'}],
rows: [{c:[{v: new Date(2008,1,1),f:'2/1/2008'},{v: 30000}, {v: 40645}]},
{c:[{v: new Date(2008,1,2),f:'2/2/2008'},{v: 14045}, {v: 20374}]},
{c:[{v: new Date(2008,1,3),f:'2/3/2008'},{v: 55022}, {v: 50766}]}]
};
var data = new google.visualization.DataTable(JSONObject, 0.5);
والآن أنا بحاجة لجلب البيانات بشكل حيوي. ولذا فإنني إرسال طلب AJAX إلى الصفحة التي يعرضها سلسلة JSON:
"cols: [{id: 'date', label: 'Date', type: 'date'},
{id: 'soldpencils', label: 'Sold Pencils', type: 'number'},
{id: 'soldpens', label: 'Sold Pens', type: 'number'}],
rows: [{c:[{v: new Date(2008,1,1),f:'2/1/2008'},{v: 30000}, {v: 40645}]},
{c:[{v: new Date(2008,1,2),f:'2/2/2008'},{v: 14045}, {v: 20374}]},
{c:[{v: new Date(2008,1,3),f:'2/3/2008'},{v: 55022}, {v: 50766}]}"
وهذا يمكنني حفظ إلى متغير:
var var1 = "cols: [{i ....... 66}]}"
ووالعرض و
alert(var1);
والآن مهمتي هي لإنشاء كائن JS من هذه السلسلة. هذا لا يعمل. عند استخدام كائن JS، كل شيء يعمل بشكل جيد وأنا قادرة على الحصول على الرسم البياني الخاص بي المطلوبة. الآن إذا حاولت وضع نفس القيمة من سلسلة من طلب AJAX الذي أكد لي من رسالة تنبيه إلى كائن ن، لم يتم الحصول على إنشاء الكائن بشكل صحيح. واسمحوا لي أن أعرف رأيك وأي تصحيح أو نصائح.
المحلول
وبعض المتصفحات الحديثة لها الدعم لتحليل JSON إلى كائن الأصلي:
var var1 = '{"cols": [{"i" ....... 66}]}';
var result = JSON.parse(var1);
لالمتصفحات التي لا تدعم ذلك، يمكنك تحميل json2.js من json.org و> للتحليل الآمن للكائن JSON. السيناريو سوف تحقق من وجود دعم JSON الأصلي، وإذا لم يكن موجودا، وتوفير الكائن العالمي JSON بدلا من ذلك. إذا كان الكائن بشكل أسرع، وأصلي متاح سيكون مجرد الخروج من البرنامج النصي تركها على حالها. يجب، ومع ذلك، وتوفير صالحة JSON أو أنه سيتم طرح خطأ - يمكنك التحقق من صحة JSON مع http://jslint.com أو http://jsonlint.com .
نصائح أخرى
ويمكنك استخدام وحدة التقييم (jsonString) إذا كنت تثق في البيانات في السلسلة، وإلا فإنك سوف تحتاج إلى تحليل بشكل صحيح - تحقق json.org لبعض نماذج التعليمات البرمجية
والسلسلة في سؤالك ليست سلسلة سلمان صالحة. من json.org موقع :
<اقتباس فقرة>وبنيت JSON على هيكلين:
* A collection of name/value pairs. In various languages, this is
realized as an object, record, struct, dictionary, hash table, keyed list, or
associative array.
* An ordered list of values. In most languages, this is realized as an
array, vector, list, or sequence.
اقتباس فقرة>
وأساسا فإن سلسلة سلمان تبدأ دائما مع أي {أو [.
وبعد ذلك كما قالAndy E وCryo يمكنك تحليل السلسلة مع json2.js أو بعض المكتبات الأخرى.
وIMHO يجب تجنب حدة التقييم لأنها سوف أي برنامج جافا سكريبت، لذلك قد تكبد في القضايا الأمنية.
والسلسلة كنت ستعود ليست صالحة JSON. أسماء في احتياجات الكائنات التي سيتم نقلت والسلسلة بأكملها يحتاج إلى أن توضع في { … }
لتشكيل كائن. JSON أيضا لا يمكن أن تحتوي على شيء من هذا القبيل new Date()
. JSON هو مجرد مجموعة فرعية صغيرة من جافا سكريبت لديها سلاسل فقط، أرقام، والكائنات، المصفوفات، true
، false
وnull
.
JSON قواعد للحصول على مزيد من المعلومات.