Command Palette

Search for a command to run...

CSV إلى JSON: سوف يأكل استنتاج النوع الرموز البريدية الخاصة بك

CSV إلى JSON: سوف يأكل استنتاج النوع الرموز البريدية الخاصة بك

T
Toolz Team
|Jul 7, 2026|16 دقيقة قراءة

جزء من مجموعة أدوات البيانات

أرسل لي أحد العملاء تصديرًا مكونًا من 12000 صفًا للعميل لتحميله في قاعدة بيانات مرحلية. لقد قمت بتحويله واستوردته وشحنه. وبعد يومين، سأل رئيس العمليات الخاص بهم عن سبب وجود رموز بريدية مكونة من أربعة أرقام لدى بضع مئات من العملاء في نيوجيرسي.

07102 أصبح 7102. يتم بتر كل سحاب يبدأ بالصفر، عبر الملف بأكمله، بهدوء. ليس بسبب خطأ - بواسطة ميزة. تم النظر في استنتاج النوع 07102، رأيت شيئًا مطابقًا &quot؛ رقم، &quot؛ وتحويلها بشكل مفيد إلى واحد. الأصفار البادئة ليست شيئًا تمتلكه الأرقام.

لقد بنيت محول CSV إلى JSON على Toolz.dev، وهو يفعل ذلك أيضًا. أنا &#39؛ سأوضح لك المكان بالضبط، لأن المحول الذي يغير بياناتك بصمت أكثر خطورة من المحول الذي يفشل للتو.

ليرة تركية؛DR: ال محول CSV إلى JSON يحول ملف CSV إلى مجموعة من الكائنات، باستخدام الصف الأول كمفاتيح، ويعمل بالكامل في متصفحك. هو - هي يستنتج دائما الأنواع ويمكنك &#39؛ إيقاف تشغيل ذلك في واجهة المستخدم - وهو ما يعني 071027102، 1250.501250.5، خلايا فارغة → null، و true/false → القيم المنطقية. الأعداد الصحيحة الكبيرة التي تتجاوز 25³ تبقى سلاسل، مما يحفظ معرفات تويتر الخاصة بك. &#39؛س فاصلة فقط في الواجهة، تم تحليل ملفات CSV الفاصلة المنقوطة من برنامج Excel الأوروبي &#39؛t. الرؤوس المكررة هي خطأ فادح وليست كتابة فوقية صامتة - وهذا &#39؛s هو تحسن حقيقي مقارنة بمعظم المحللين. تحقق من الإخراج قبل الاستيراد، واستخدم تنسيق JSON لمقلة العين ذلك.


ماذا يفعل هذا المحول فعليًا ببياناتك؟

كل قيمة في CSV هي نص. 29 هي الشخصيات 2 و 9. لدى JSON أنواع حقيقية، لذا يجب على المحول أن يقرر: هو 29 الرقم 29 أو السلسلة &quot؛29&quot؛؟ هناك &#39؛ لا توجد إجابة صحيحة بشكل عام، وكل محلل CSV يخمن.

هذا يخمن. دائما. هنا &#39؛s مجموعة القواعد الكاملة، مباشرة من الكود ويتم التحقق منها عن طريق تشغيلها

قيمة CSV إخراج JSON يكتب
29 29 رقم
07102 7102 الرقم - صفر ذهب
1250.50 1250.5 الرقم - ذهب سنت
true / TRUE true منطقية
null / NIL null فارغ
(خلية فارغة) null فارغ
9007199254740993 "9007199254740993" سلسلة
1e3 1000 رقم
+5 "+5" سلسلة
.5 ".5" سلسلة
NO "NO" سلسلة
+8801712345678 "+8801712345678" سلسلة
2024-01-05 "2024-01-05" سلسلة

عدد قليل منها يستحق نظرة فاحصة، لأن النمط &#39؛t واضح.

الرقم regex صارم، وهذا &#39؛s حامل. يتطابق ^-?\d+$ ولا شيء غير ذلك. هذا &#39؛ لماذا +5 و .5 البقاء على قيد الحياة كسلاسل - لا يوجد علامة زائد بادئة، ولا علامة عشرية عارية. It&#39؛s أيضًا لماذا +8801712345678- رقم هاتف بنجلاديشي، وأختبره معي - يأتي سليمًا. قطاع ذلك + وأنت &#39؛d تفقدها بسبب التحويل الرقمي. لذا فإن صرامة regex تحمي أرقام الهواتف عن طريق الخطأ، وأرقام الهواتف فقط هي التي تحتفظ برمز البلد الخاص بها.

يتم التعامل مع الأعداد الصحيحة الكبيرة بشكل صحيح، الأمر الذي فاجأني. يتم الاحتفاظ بأي شيء خارج نطاق الأعداد الصحيحة الآمنة لـ JavaScript&#39؛ (±25³-1) عمدًا كسلسلة بدلاً من تحويلها وتشويهها. تبقى معرفات Snowflake ومعرفات Twitter ومفاتيح قاعدة البيانات المكونة من 19 رقمًا. معظم المحولات الساذجة تتصل parseInt ويسلمك 9007199254740992 حيث كان لديك ...93. هذا يتحقق من الحد أولا.

NO يبقى سلسلة- الذي يتهرب بهدوء من مشكلة النرويج التي تأكل ملفات YAML. تنسيق مختلف، محلل مختلف، ولكن تجدر الإشارة إلى: رمز البلد NO عبارة عن عملة معدنية لكيفية تعامل محلل التكوين معها، وهنا &#39؛s آمنة.

فارغة تعني سلسلة فارغة وليست فارغة. وهنا &#39؛s خطأ توثيق صغير وجدته يكتب هذا: الأداة &#39؛s الخاصة &quot؛ كيف يعمل والاقتباس؛ تقول اللوحة &quot؛ يتم الاحتفاظ بالقيم الفارغة كسلاسل فارغة في إخراج JSON.&quot؛ هم &#39؛ر. inferType('') يعود null. نص واجهة المستخدم خاطئ؛ الكود هو ما يشحن. أنا &#39؛م إصلاح النسخة.


لماذا يصبح 07102 7102، وماذا أفعل حيال ذلك؟

لأن الرمز البريدي ليس رقمًا ويمكن للكمبيوتر &#39؛ أخبر.

07102 المطابقات والاقتباس؛ أرقام، سلبية واختياريًا؛ تماما. parseInt("07102", 10) يكون 7102. الصفر البادئ يحمل المعنى - هو كان البيانات - والأرقام ليس لها طريقة للاحتفاظ بها. يحدث نفس الشيء ل:

  • الرموز البريدية: 07102، 01950أي شيء في نيو إنجلاند أو نيوجيرسي
  • وحدات SKU الخاصة بالمنتج: 00451
  • أرقام الهواتف بدون علامة زائد: 0171...
  • رموز البنك/التوجيه، معرفات الموظفين، أي معرف مبطن
  • مال: 1250.501250.5، و 2100.002100

هذا الأخير يستحق الجلوس معه. 1250.50 و 1250.5 هل نفس الرقم وسلسلة مختلفة. إذا كنت &#39؛ يتم عرض العملة في اتجاه مجرى النهر، $1250.5 سيظهر في واجهة مستخدم في مكان ما، وسيقوم شخص ما بتقديم خطأ يستغرق ساعة لتتبعه مرة أخرى إلى تحويل CSV قبل ثلاثة أسابيع. (الدرس الحقيقي هناك هو تخزين الأموال كسنتات صحيحة أو سلسلة عشرية، وليس تعويمًا أبدًا - ولكن هذا &#39؛ معركة من أجل مقال مختلف.)

في الوقت الحالي، في هذه الأداة، هناك لا يوجد تبديل لإيقاف الاستدلال. الوظيفة الأساسية تأخذ inferTypes الخيار وواجهة المستخدم لا يمررانها أبدًا، لذا فهو &#39؛s، بشكل دائم، في الوضع الافتراضي. That&#39؛s فجوة، وit&#39؛s العنصر العلوي في قائمتي لهذه الأداة.

حتى يتم الشحن، خياراتك:

  1. انظر إلى الإخراج. على محمل الجد - ولهذا السبب تعرض الأداة JSON في جزء بدلاً من مجرد تنزيلها. مسح أعمدة المعرف الخاص بك. يستغرق الأمر عشر ثوانٍ، وهو &#39؛ كيف كان يجب أن ألتقط الرموز البريدية.
  2. إثبات الاقتباس منه المنبع. الاقتباس في CSV فاز &#39؛ مساعدة - يقوم المحلل اللغوي بشرائط الاقتباس و ثم يستنتج، لذلك "07102" لا يزال يصبح 7102. بدلاً من ذلك، اجعل القيمة غير رقمية عند المصدر: قم بالتصدير كـ ZIP-07102، أو أضف عمود بادئة في جدول البيانات.
  3. بعد العملية. قم بالتحويل، ثم قم بإصلاح الأعمدة التي تعرف أنها معرفات data.forEach(r => r.zip = String(r.zip).padStart(5, '0')). قبيحة ولكنها صادقة وقابلة للتدقيق.
  4. استخدم محللًا حقيقيًا لخطوط الأنابيب الحقيقية. لأي شيء مجدول أو آلي، csv-parse أو بابا تحليل في العقدة مع cast: false سوف تفعل هذا بشكل صحيح. أداة المتصفح مخصصة لمرة واحدة.

ما الذي يحصل عليه المحلل اللغوي بشكل صحيح؟

أنا &#39؛ لقد كنت قاسيًا على ذلك، لذا هنا &#39؛s النصف الآخر - وبعض هذا أفضل حقًا مما ستجده أنت و#39؛ في مكان آخر.

الرؤوس المكررة هي خطأ فادح. أطعمه a,b,a ويرفض: Duplicate headers found: a. يسمح معظم المحللين بصمت للعمود الأخير بالفوز، لذلك يختفي عمود من البيانات بدون كلمة واحدة. الفشل بصوت عالٍ هنا هو المكالمة الصحيحة - لا يمكن أن يكون لديك مفتاحين يحملان نفس الاسم في كائن JSON، والتظاهر بخلاف ذلك يفقد البيانات.

يتم التعامل مع الحقول المقتبسة بشكل صحيحلكل RFC 4180. الفواصل داخل علامات الاقتباس تبقى في مكانها؛ "" يصبح حرفيا ". تأتي بيانات العينة مع "Mike, Jr." تحديدا لإثبات ذلك.

تعمل الخطوط الجديدة داخل الحقول المقتبسة. هذا هو المكان الذي يموت فيه عادةً تقسيم CSV الملفوف يدويًا - حيث ينفصل شخص ما \n ويقوم حقل عنوان متعدد الأسطر بتفجير الملف بأكمله. تقتبس مسارات مقسم الصفوف حرف الحالة حسب الحرف، لذا "line1\nline2" يبقى مجالا واحدا.

يتم تخطي الخطوط الفارغة، لذا فإن الأسطر الجديدة اللاحقة والصف الفارغ الشارد الذي يتركه Excel في النهاية don&#39؛t ينتج كائنات وهمية.

الصفوف الخشنة لا &#39؛ تحطم. عدد قليل جدًا من الحقول والمفاتيح المفقودة تعود null؛ يتم إسقاط عدد كبير جدًا من الإضافات التي تجاوزت عدد رؤوسك بصمت. (هذا الجزء الأخير I&#39؛d يدعو قابل للنقاش وليس صحيحًا - سيكون التحذير أفضل من التخلص الهادئ.)

انحراف RFC واحد لمعرفة ما يلي: يتم تقليص القيم، بما في ذلك علامات الاقتباس الداخلية. يقول RFC 4180 §2.4 أن المسافات جزء من الحقل ويجب &#39؛ ويجب تجاهلها، لذا " John " ينبغي أن يكون " John ". هذه الأداة تعطيك "John". That&#39؛s راحة متعمدة - 99% من الوقت الذي تتخلف فيه المسافة البيضاء في ملف CSV هو حادث تريده - ولكن إذا كنت &#39؛ فهي بيانات ذهابًا وإيابًا حيث تكون الحشو مهمة، فهي &#39؛s خطوة مع فقدان والمواصفات ليست في جانبي.


لماذا فاز &#39؛ t تحليل CSV للفاصلة المنقوطة الخاصة بي؟

لأن الواجهة عبارة عن فاصلة فقط، وهذا يجذب كل الصادرات الأوروبية.

Excel في لغة تستخدم فاصلة حيث يقوم الفاصل العشري بكتابة ملفات CSV باستخدام الفواصل المنقوطة كمحدد الحقل. صالحة تمامًا، وشائعة للغاية، ولن تقوم هذه الأداة بتحليلها. لصق a;b وتحصل على مفتاح واحد يسمى حرفيًا a;b مع القيمة "1;2". إنه لا يحدث &#39؛ خطأ - فهو ينتج عمودًا واحدًا عديم الفائدة فقط، وهو أسوأ من الخطأ.

تقبل وظيفة التحليل أ delimiter خيار. واجهة المستخدم لا تكشف ذلك أبدًا. نفس فئة الفجوة مثل تبديل الاستدلال.

الحلول:

  • البحث والاستبدال ;, في محرر النصوص أولاً - آمن فقط إذا لم يكن هناك حقل يحتوي على فاصلة داخل علامات الاقتباس.
  • إعادة التصدير من برنامج Excel مع &quot؛CSV UTF-8 (فاصلة محددة)&quot؛.
  • استخدم عارض CSV بدلاً من ذلك - يقوم باكتشاف المحددات عن طريق تسجيل اتساق عدد الأعمدة عبر محددات المرشح، لذلك سوف يقرأ ملف الفاصلة المنقوطة الخاص بك. لقد فاز &#39؛ تم تحويله إلى JSON، لكنه &#39؛ سيُظهر لك ما لديك.

علامات التبويب لديها نفس المشكلة. وكذلك الأنابيب المحددة.


كيف يمكنني تحويل CSV إلى JSON على Toolz.dev؟

الخطوة 1: افتح المحول

اذهب إلى محول CSV إلى JSON. يتم تحميل عينة البيانات وتحويلها بالفعل، حتى تتمكن من رؤية الشكل على الفور.

الخطوة 2: الصق ملف CSV الخاص بك

لصق في الجزء الأيسر. هناك &#39؛س لا تحميل الملف- it&#39؛s منطقة نصية، لذا افتح موقعك .csv في محرر النصوص ونسخها عبر. لبضعة آلاف من الصفوف التي &#39؛s غرامة. لتصدير 200 ميجابايت، استخدم محللًا حقيقيًا.

يجب أن يكون الصف الأول عبارة عن رؤوس، وتحتاج إلى صف بيانات واحد على الأقل. يعود سطر واحد CSV must have at least a header row and one data row.

الخطوة 3: التحويل

يضرب تحويل إلى JSON. تحصل على مجموعة من الكائنات، واحد لكل صف، ومفاتيح من رأسك، ومسافة بادئة بمسافتين. يظهر عدد الصفوف أعلى الإخراج - تحقق منه مقابل ما كنت تتوقعه، لأنه &#39؛s أرخص اختبار ممكن للسلامة العقلية.

الخطوة 4: اقرأ المخرجات قبل أن تثق بها

الخطوة التي تخطاها الجميع وتخطيتها مرة واحدة. انظر إلى أعمدة الهوية الخاصة بك. انظر إلى أعمدة أموالك. إذا ظهر رمز بريدي غير مقتبس في JSON، فهو &#39؛s رقم الآن.

الخطوة 5: نسخ أو تنزيل

نسخة للحافظة، تنزيل json ل data.json ملف.


متى لا يجب أن أستخدم محول المتصفح؟

الصدق بشأن الحدود:

حالة يستخدم
لمرة واحدة، بضعة آلاف من الصفوف CSV إلى JSON
يمكنك تحميل البيانات الحساسة &#39؛t هذا - لا يترك متصفحك أبدًا
أي شيء مجدول أو آلي csv-parse / تحليل بابا في العقدة
الفاصلة المنقوطة أو علامة التبويب محددة عارض CSV، أو إصلاح المحدد
الرموز البريدية، وحدات SKU، المعرفات المبطنة أي شيء مع cast: false
الإخراج المتداخل من الرؤوس المنقطة البرنامج النصي - ينتج عن ذلك كائنات مسطحة فقط
100k+ صفوف محلل التدفق؛ يحتفظ المتصفح بكل شيء في الذاكرة
الذهاب في الاتجاه الآخر json إلى CSV

هذا &quot؛ الإخراج والحاصل المتداخل؛ يستحق الصف أن يُذكر بوضوح نظرًا لأن الإصدارات الأقدم من هذا الدليل تدعي خلاف ذلك: رؤوس مثل user.name و address.city يفعل لا تصبح كائنات متداخلة. تحصل على كائن مسطح بمفتاح يسمى حرفيًا "user.name". هناك &#39؛s لا يوجد توسيع للتدوين النقطي، ولا تحويل للرأس، ولا تحويل لـ CamelCase. الكائنات المسطحة، والمفاتيح تمامًا كما هي مكتوبة في صف الرأس الخاص بك - المسافات والتجزئة وكل شيء. رأس Order # يعطيك مفتاح "Order #"، وهو JSON قانوني وجافا سكريبت محرج (row["Order #"]).

سبب الوصول إلى هذه الأداة هو نفس سبب بقية الموقع: بياناتك &#39؛ لا تذهب إلى أي مكان. إذا كنت &#39؛إعادة تحويل تصدير العميل بأسماء حقيقية ورسائل بريد إلكتروني فيه، فهذا &#39؛ ليس بالأمر الهين - لصقه في محول من جانب الخادم يعني تسليم ملف بيانات شخصية لطرف ثالث، وهو عبارة عن محادثة مع DPO الخاص بك &#39؛ أفضل عدم القيام بذلك. هنا يتم تشغيل التحليل في علامة التبويب الخاصة بك. قم بإيقاف تشغيل شبكة Wi-Fi وما زالت تعمل.


الأسئلة الشائعة

لماذا فقد الرمز البريدي الخاص بي الصفر البادئ؟

لأن استنتاج النوع حوله إلى رقم، والأرقام يمكن &#39؛t تخزين الأصفار البادئة. 07102 يطابق &quot؛الأرقام فقط&quot؛ النمط، لذلك يصبح 7102. يؤثر هذا على الرموز البريدية ووحدات SKU المبطنة ومعرفات الموظفين وأي معرف يصادف أنه مكون من جميع الأرقام. اقتباسه في CSV won&#39؛ مساعدة - يتم تجريد علامات الاقتباس قبل تشغيل الاستدلال. تحقق من أعمدة المعرف الخاصة بك في الإخراج، أو قم بوضع بادئة القيم في المصدر لجعلها غير رقمية.

هل يمكنني إيقاف التحويل التلقائي للنوع؟

ليس في الواجهة. الوظيفة الأساسية تدعم أ inferTypes الخيار، ولكن واجهة المستخدم لا &#39؛ يعرضه، لذلك يكون الاستدلال قيد التشغيل دائمًا. إذا كنت بحاجة إلى سلاسل أولية، فاستخدم محلل مكتبة مثل Papa Parse أو csv-parse مع تعطيل الصب، أو إصلاح الأعمدة المتأثرة بعد التحويل.

هل يدعم الفاصلة المنقوطة أو الملفات المحددة بعلامة التبويب؟

لا - الواجهة عبارة عن فاصلة فقط. يتم تحليل ملف الفاصلة المنقوطة إلى عمود واحد لا معنى له بدلاً من الخطأ، لذا شاهد ذلك. استبدل الفواصل المنقوطة بفواصل أولاً (آمن فقط إذا لم يكن هناك حقل مقتبس يحتوي على فاصلة)، أو أعد التصدير من Excel كفاصلة محددة، أو استخدم عارض CSV، الذي يكتشف المحددات تلقائيًا.

ماذا يحدث للخلايا الفارغة؟

يصبحون null، ليست سلاسل فارغة. لاحظ أن الأداة &#39؛s الخاصة &quot؛ كيف يعمل &quot؛ تقول اللوحة حاليًا العكس - نص اللوحة خاطئ والرمز صحيح. الخلايا التي تحتوي على النص الحرفي null أو nil تصبح أيضا null.

هل يمكنني تحويل ملف CSV بدون صف رأس؟

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

هل يتعامل مع الفواصل وفواصل الأسطر داخل الحقول المقتبسة؟

نعم كلاهما. يقتبس المحلل اللغوي حرفًا تلو الآخر، لذا فإن الحقل يشبه "Mike, Jr." يحتفظ بفاصلة، ويظل الحقل المقتبس الذي يحتوي على سطر جديد قيمة واحدة بدلاً من تقسيم الصف. علامات الاقتباس المزدوجة الهاربة ("") أصبح اقتباسًا حرفيًا واحدًا، وفقًا لـ RFC 4180.

ماذا يحدث مع أسماء الأعمدة المكررة؟

يرفض التحويل ويخبرك بالرأس المكرر. هذا &#39؛s متعمد - يمكن لكائن JSON &#39؛t أن يحتوي على مفتاحين متطابقين، لذا فإن البديل هو إسقاط عمود بصمت. العديد من المحللين يفعلون ذلك بالضبط؛ إعادة تسمية الأعمدة وتحويلها مرة أخرى.

هل هناك حد للصف؟

لا يوجد حد مفروض، ولكن كل شيء يعمل في متصفحك وذاكرة #39؛: نص CSV، والمصفوفة التي تم تحليلها، وسلسلة JSON المنسقة كلها موجودة في وقت واحد. بضعة آلاف من الصفوف مريحة؛ سيؤدي عدد الصفوف المكونة من ستة أرقام إلى جعل علامة التبويب صعبة. بالنسبة للملفات الكبيرة، استخدم محلل التدفق في Node بدلاً من ذلك.

هل يتم تحميل بياناتي في أي مكان؟

لا. يحدث التحليل في متصفحك ولا يتم إرسال ملف CSV الخاص بك أبدًا، وهو ما يجعله آمنًا لصادرات العملاء والبيانات الأخرى التي يمكنك &#39؛ لصقها بشكل قانوني في أداة من جانب الخادم. تحقق من ذلك بالطريقة السهلة - افتح DevTools، أو شاهد علامة تبويب الشبكة أثناء التحويل، أو قم فقط بإيقاف تشغيل شبكة Wi-Fi الخاصة بك وتأكد من أنها لا تزال تعمل.


النسخة القصيرة

يبدو CSV إلى JSON وكأنه التحويل الأكثر مللاً في الحوسبة وهو &#39؛t، لأنه في اللحظة التي يقرر فيها المحلل اللغوي ما هي سلاسلك يقصد، يمكن أن يكون خطأ في الطرق التي تعلن بها &#39؛t عن نفسها. لا خطأ ولا تحذير، فقط رموز بريدية مكونة من أربعة أرقام تظهر بعد يومين.

إذن: تحويل إذن قراءة الإخراج. تحقق من الأعمدة التي تمثل معرفات تتظاهر بأنها أرقام. إذا خرجت بدون اقتباس، فأنت &#39؛ لقد فقدت شيئًا ما. هذه العادة تكلف عشر ثوانٍ وكانت ستوفر لي بريدًا إلكترونيًا محرجًا.

ال محول CSV إلى JSON جيد في المهمة التي تتم لمرة واحدة - الحقول المقتبسة، والأسطر الجديدة المضمنة، ومعرفات الأعداد الصحيحة الكبيرة، والفشل الكبير في الرؤوس المكررة، كل ذلك دون مغادرة بياناتك للمتصفح. It&#39؛s فاصلة فقط، فهي تستنتج دائمًا الأنواع، وتنتج كائنات مسطحة. الآن أنت تعرف الثلاثة قبل أن يعضوا.

الذهاب في الاتجاه الآخر: json إلى CSV. لفحص CSV فوضوي أولاً: عارض CSV. للتحقق من الإخراج: تنسيق JSON. وإذا كانت بياناتك &#39؛s تتجه إلى ملف التكوين، JSON إلى YAML. الجولة الأوسع في دليل أدوات JSON و ال دليل أدوات الترميز.

Frequently Asked Questions

Because type inference converted it to a number, and numbers can't store leading zeros. 07102 matches the "digits only" pattern, so it becomes 7102. This affects zip codes, padded SKUs, employee IDs, and any identifier that happens to be all digits. Quoting it in the CSV won't help — quotes are stripped before inference runs. Check your ID columns in the output, or prefix the values at the source to make them non-numeric.

Comments

0 comments

0/2000 characters

No comments yet. Be the first to share your thoughts!