أنواع دوال JSON
هناك مجموعتان من الدوال لتحليل JSON:simpleJSON*(visitParam*) وهي مصممة لتحليل مجموعة فرعية محدودة من JSON بسرعة فائقة.JSONExtract*وهي مصممة لتحليل JSON العادي.
دوال simpleJSON (visitParam)
يحتوي ClickHouse على دوال خاصة للعمل مع JSON المبسّط. تستند جميع دوال JSON هذه إلى افتراضات صارمة بشأن الشكل الذي يمكن أن يكون عليه JSON. وتحاول تنفيذ أقل قدر ممكن من المعالجة لإنجاز المهمة بأسرع ما يمكن. تُفترض الافتراضات التالية:- يجب أن يكون اسم الحقل (وسيطة الدالة) ثابتًا.
- يجب أن يكون اسم الحقل مُرمَّزًا داخل JSON بطريقة معيارية ما. على سبيل المثال:
simpleJSONHas('{"abc":"def"}', 'abc') = 1، لكنsimpleJSONHas('{"\\u0061\\u0062\\u0063":"def"}', 'abc') = 0 - يُبحث عن الحقول في أي مستوى من مستويات التداخل، دون تمييز. وإذا وُجدت عدة حقول متطابقة، فيُستخدم أول ظهور.
- لا يحتوي JSON على محارف مسافة خارج القيم النصية الحرفية.
دوال JSONExtract
تعتمد هذه الدوال على simdjson، وقد صُممت لتلبية متطلبات تحليل JSON الأكثر تعقيدًا.دوال JSONExtract غير الحساسة لحالة الأحرف
تُجري هذه الدوال مطابقة المفاتيح دون مراعاة حالة أحرف ASCII عند استخراج القيم من كائنات JSON. وهي تعمل تمامًا مثل نظيراتها الحساسة لحالة الأحرف، باستثناء أن مطابقة مفاتيح الكائنات تتم من دون مراعاة حالة الأحرف. وعند وجود عدة مفاتيح متطابقة مع اختلاف حالة الأحرف، تُعاد أول مطابقة.قد يكون أداء هذه الدوال أقل من نظيراتها الحساسة لحالة الأحرف، لذا استخدم دوال JSONExtract العادية إن أمكن.
صياغة JSONPath
تقبل الدوالJSON_EXISTS وJSON_VALUE وJSON_QUERY تعبير JSONPath
كوسيطة ثانية. يدعم ClickHouse مجموعة فرعية محدودة من JSONPath،
تستند بصورة عامة إلى معيار SQL/JSON (ISO/IEC TR 19075-6)، وهي أضيق نطاقًا عمدًا من RFC 9535
والتنفيذات الشائعة الأخرى. تُدرج عوامل التشغيل المدعومة أدناه.
يوجد التنفيذ المعتمد في
src/Functions/JSONPath/Parsers.
العوامل المدعومة
ملاحظات:
- يمكن دمج الفهارس والنطاقات داخل زوج الأقواس نفسه (على سبيل المثال،
[0 to 2, 4]). - لا يمكن دمج نطاقات الفهارس وحرف البدل داخل زوج الأقواس نفسه (على سبيل المثال،
[* , 0]غير صالح). - في النطاق
[n to m]، يجب أن تكون البدايةnأصغر من النهايةm، وإلا يُثار استثناء. - الفهرس المفرد
[n]مكافئ للنطاق `[n to n+1].
العوامل غير المدعومة
عوامل JSONPath التالية، المتاحة في RFC 9535 أو في تطبيقات أخرى، غير مدعومة في ClickHouse:JSONAllPaths
أُضيف في: v24.8.0 يعيد قائمة بجميع المسارات المخزنة في كل صف ضمن عمود JSON. الصيغةjson— عمود JSON.JSON
Array(String)
أمثلة
مثال على الاستخدام
Query
Response
JSONAllPathsWithTypes
أُضيفت في: v24.8.0 تعيد قائمة بجميع المسارات وأنواع البيانات المرتبطة بها والمخزنة في كل صف من عمود JSON. البنيةjson— عمود JSON.JSON
Map(String, String)
أمثلة
مثال على الاستخدام
Query
Response
JSONAllValues
أُضيف في: v26.4.0 يعيد جميع القيم من كل صف في عمود JSON على شكل مصفوفة من السلاسل النصية. تُسلسَل القيم بصياغتها النصية وتُرتَّب حسب أسماء المسارات. الصياغةjson— عمود JSON.JSON
Array(String)
أمثلة
مثال على الاستخدام
Query
Response
JSONArrayLength
تم تقديمها في: v23.2.0 تعيد عدد العناصر في مصفوفة JSON ذات المستوى الأعلى. تعيد الدالةNULL إذا كانت سلسلة JSON المُدخلة غير صالحة.
البنية
JSON_ARRAY_LENGTH
الوسيطات
json— String يحتوي على JSON صالح.String
json سلسلة تمثل مصفوفة JSON صالحة، وإلا يعيد NULL. Nullable(UInt64)
أمثلة
مثال على الاستخدام
Query
Response
JSONDynamicPaths
تم تقديمه في: v24.8.0 يعيد قائمة المسارات الديناميكية المخزَّنة كأعمدة فرعية منفصلة في عمود JSON. الصيغةjson— عمود JSON.JSON
Array(String)
أمثلة
مثال على الاستخدام
Query
Response
JSONDynamicPathsWithTypes
أُضيفت في: v24.8.0 تعيد قائمة بالمسارات الديناميكية المخزّنة كأعمدة فرعية منفصلة، وأنواعها في كل صف ضمن عمود JSON. البنيةjson— عمود JSON.JSON
Map(String, String)
أمثلة
مثال للاستخدام
Query
Response
JSONExtract
قُدِّم في: v19.14.0 يحلّل JSON ويستخرج قيمةً من نوع بيانات ClickHouse المحدد. الصياغةjson— سلسلة JSON المراد تحليلها.Stringindices_or_keys— قائمة تضم صفرًا أو أكثر من الوسيطات، ويمكن أن يكون كل منها إما سلسلة نصية أو عددًا صحيحًا.Stringأو(U)Int*return_type— نوع بيانات ClickHouse المراد إرجاعه.String
Query
Response
JSONExtractArrayRaw
أُضيف في: v20.1.0 يعيد مصفوفةً تحتوي على عناصر من مصفوفة JSON، ويُمثَّل كل عنصر فيها كسلسلة غير محللة. الصيغةjson— سلسلة JSON نصية مطلوب تحليلها.Stringindices_or_keys— قائمة تضم صفرًا أو أكثر من الوسيطات، ويمكن أن يكون كل منها سلسلة نصية أو عددًا صحيحًا.Stringأو(U)Int*
Array(String)
أمثلة
مثال على الاستخدام
Query
Response
JSONExtractArrayRawCaseInsensitive
أُضيف في: v25.8.0 يعيد مصفوفة تضم عناصر من مصفوفة JSON، ويُمثَّل كل عنصر فيها كسلسلة نصية غير محلَّلة، مع استخدام مطابقة المفاتيح دون مراعاة حالة الأحرف. تشبه هذه الدالةJSONExtractArrayRaw.
البنية
json— سلسلة JSON المطلوب تحليلهاStringindices_or_keys— اختياري. الفهارس أو المفاتيح المستخدمة للتنقل داخل المصفوفة. تستخدم المفاتيح مطابقة غير حساسة لحالة الأحرفStringأو(U)Int*
Array(String)
أمثلة
أساسي
Query
Response
JSONExtractBool
طُرح في: v20.1.0 يُحلِّل JSON ويستخرج قيمة من النوع Bool. البنيةjson— سلسلة JSON المراد تحليلها.Stringindices_or_keys— قائمة تتضمن صفرًا أو أكثر من الوسائط، ويمكن أن يكون كل منها إما سلسلة نصية أو عددًا صحيحًا.Stringأو(U)Int*
Bool إذا وُجدت، وإلا فتعيد 0. Bool
أمثلة
مثال على الاستخدام
Query
Response
JSONExtractBoolCaseInsensitive
أُضيفت في: v25.8.0 يُحلّل JSON ويستخرج قيمة منطقية باستخدام مطابقة المفاتيح غير الحساسة لحالة الأحرف. هذه الدالة مشابهة لـJSONExtractBool.
البنية
json— سلسلة JSON المطلوب تحليلهاStringindices_or_keys— اختياري. الفهارس أو المفاتيح للتنقل إلى الحقل. تستخدم المفاتيح مطابقة غير حساسة لحالة الأحرفStringأو(U)Int*
UInt8
أمثلة
بسيط
Query
Response
JSONExtractCaseInsensitive
أُضيفت في: v25.8.0 تُحلِّل JSON وتستخرج قيمة بنوع بيانات ClickHouse المحدد باستخدام مطابقة المفاتيح دون تمييز بين الأحرف الكبيرة والصغيرة. هذه الدالة مشابهة لـJSONExtract.
البنية
json— سلسلة JSON المراد تحليلهاStringindices_or_keys— اختياري. الفهارس أو المفاتيح للوصول إلى الحقل. تخضع المفاتيح لمطابقة غير حساسة لحالة الأحرفStringأو(U)Int*return_type— نوع بيانات ClickHouse المراد استخراجهString
Any
أمثلة
int_type
Query
Response
Query
Response
JSONExtractFloat
قُدِّم في: v20.1.0 يحلّل JSON ويستخرج قيمة من نوع Float. الصيغةjson— سلسلة JSON المراد تحليلها.Stringindices_or_keys— قائمة تضم صفرًا أو أكثر من الوسيطات، ويمكن أن يكون كلٌّ منها إما سلسلة نصية أو عددًا صحيحًا.Stringأو(U)Int*
0. Float64
أمثلة
مثال على الاستخدام
Query
Response
JSONExtractFloatCaseInsensitive
أُضيفت في: v25.8.0 تُحلّل JSON وتستخرج قيمة من النوع Float باستخدام مطابقة مفاتيح غير حساسة لحالة الأحرف. هذه الدالة مشابهة لـJSONExtractFloat.
الصيغة
json— سلسلة JSON المطلوب تحليلهاStringindices_or_keys— اختياري. فهارس أو مفاتيح للوصول إلى الحقل. تُطابَق المفاتيح دون حساسية لحالة الأحرفStringأو(U)Int*
Float64
أمثلة
بسيط
Query
Response
JSONExtractInt
أُضيفت في: v20.1.0 تُحلِّل JSON وتستخرج قيمة من النوع Int. الصياغةjson— سلسلة JSON المراد تحليلها.Stringindices_or_keys— قائمة تضم صفرًا أو أكثر من الوسائط، ويمكن أن يكون كلٌّ منها إما سلسلة نصية أو عددًا صحيحًا.Stringأو(U)Int*
0. Int64
أمثلة
مثال على الاستخدام
Query
Response
JSONExtractIntCaseInsensitive
أُضيف في: v25.8.0 يحلّل JSON ويستخرج قيمة من نوع Int باستخدام مطابقة المفاتيح دون تمييز بين الأحرف الكبيرة والصغيرة. هذه الدالة مشابهة لـJSONExtractInt.
الصياغة
json— سلسلة JSON المراد تحليلهاStringindices_or_keys— اختياري. الفهارس أو المفاتيح المستخدمة للوصول إلى الحقل. تُطابَق المفاتيح دون تمييز بين الأحرف الكبيرة والصغيرةStringأو(U)Int*
Int64
أمثلة
بسيط
Query
Response
Query
Response
JSONExtractKeys
أُضيفت في: v21.11.0 يحلّل سلسلة JSON ويستخرج المفاتيح. الصياغةjson— سلسلة JSON المطلوب تحليلها.Stringindices_or_keys— قائمة من صفر أو أكثر من الوسيطات، يمكن أن يكون كلٌّ منها سلسلة نصية أو عددًا صحيحًا.Stringأو(U)Int*
Array(String)
أمثلة
مثال على الاستخدام
Query
Response
JSONExtractKeysAndValues
أُضيف في: v20.1.0 يحلّل أزواج مفتاح-قيمة من JSON، حيث تكون القيم من نوع بيانات ClickHouse المحدد. الصيغةjson— سلسلة JSON المطلوب تحليلها.Stringindices_or_keys— قائمة تضم صفرًا أو أكثر من الوسيطات، ويمكن أن يكون كل منها سلسلة نصية أو عددًا صحيحًا.Stringأو(U)Int*value_type— نوع بيانات ClickHouse للقيم.String
Array(Tuple(String, value_type))
أمثلة
مثال على الاستخدام
Query
Response
JSONExtractKeysAndValuesCaseInsensitive
تم تقديمها في: v25.8.0 يحلّل أزواج المفتاح-القيمة من JSON باستخدام مطابقة مفاتيح غير حساسة لحالة الأحرف. تشبه هذه الدالةJSONExtractKeysAndValues.
البنية
json— سلسلة JSON المطلوب تحليلهاStringindices_or_keys— اختياري. الفهارس أو المفاتيح للوصول إلى الكائن. تُطابَق المفاتيح دون مراعاة حالة الأحرفStringأو(U)Int*value_type— نوع بيانات ClickHouse للقيمString
Array(Tuple(String, T))
أمثلة
أساسي
Query
Response
JSONExtractKeysAndValuesRaw
أُضيفت في: v20.4.0 يعيد مصفوفة من Tuple تتضمن المفاتيح والقيم من كائن JSON. تُمثَّل جميع القيم كسلاسل نصية غير محلَّلة. الصياغةjson— سلسلة JSON المطلوب تحليلها.Stringindices_or_keys— قائمة تتكوّن من صفر أو أكثر من الوسيطات، ويمكن أن يكون كلٌّ منها إما سلسلة نصية أو عددًا صحيحًا.Stringأو(U)Int*
Array(Tuple(String, String))
أمثلة
مثال على الاستخدام
Query
Response
JSONExtractKeysAndValuesRawCaseInsensitive
استُحدث في: v25.8.0 يستخرج أزواج المفتاح والقيمة الخام من JSON باستخدام مطابقة المفاتيح دون مراعاة حالة الأحرف. هذه الدالة مشابهة لـJSONExtractKeysAndValuesRaw.
الصياغة
json— سلسلة JSON المطلوب تحليلهاStringindices_or_keys— اختياري. فهارس أو مفاتيح للوصول إلى الكائن. تُطابَق المفاتيح دون حساسية لحالة الأحرفStringأو(U)Int*
Array(Tuple(String, String))
أمثلة
أساسي
Query
Response
JSONExtractKeysCaseInsensitive
أُضيف في: v25.8.0 يحلّل سلسلة JSON ويستخرج المفاتيح باستخدام مطابقة المفاتيح دون تمييز بين الأحرف الكبيرة والصغيرة للتنقّل داخل الكائنات المتداخلة. هذه الدالة مشابهة لـJSONExtractKeys.
البنية
json— سلسلة JSON المطلوب تحليلهاStringindices_or_keys— اختياري. فهارس أو مفاتيح للوصول إلى الكائن. تُطابَق المفاتيح دون حساسية لحالة الأحرفStringأو(U)Int*
Array(String)
أمثلة
بسيط
Query
Response
Query
Response
JSONExtractRaw
أُضيف في: v20.1.0 يعيد جزءًا من JSON على هيئة سلسلة غير محلَّلة. البنيةjson— سلسلة JSON المراد تحليلها.Stringindices_or_keys— قائمة تضم صفرًا أو أكثر من الوسائط، ويمكن أن يكون كلٌّ منها إما سلسلة نصية أو عددًا صحيحًا.Stringأو(U)Int*
String
أمثلة
مثال على الاستخدام
Query
Response
JSONExtractRawCaseInsensitive
أُضيف في: v25.8.0 يعيد جزءًا من JSON على هيئة سلسلة نصية غير محللة باستخدام مطابقة للمفاتيح غير حساسة لحالة الأحرف. هذه الدالة مشابهة لـJSONExtractRaw.
البنية
json— سلسلة JSON المطلوب تحليلهاStringindices_or_keys— اختياري. فهارس أو مفاتيح للوصول إلى الحقل. تستخدم المفاتيح مطابقة تتجاهل حالة الأحرفStringأو(U)Int*
String
أمثلة
كائن
Query
Response
JSONExtractString
طُرح في: v20.1.0 يُحلِّل JSON ويستخرج قيمة من نوع String. الصيغةjson— سلسلة JSON المراد تحليلها.Stringindices_or_keys— قائمة تضم صفرًا أو أكثر من الوسيطات، ويمكن أن يكون كل منها إما سلسلة نصية أو عددًا صحيحًا.Stringأو(U)Int*
String
أمثلة
مثال على الاستخدام
Query
Response
JSONExtractStringCaseInsensitive
أُضيفت في: v25.8.0 يُحلّل JSON ويستخرج قيمة نصية باستخدام مطابقة المفاتيح دون مراعاة حالة الأحرف. هذه الدالة مشابهة لـJSONExtractString.
الصيغة
json— سلسلة JSON المطلوب تحليلهاStringindices_or_keys— اختياري. فهارس أو مفاتيح للتنقل إلى الحقل. وتدعم المفاتيح المطابقة غير الحساسة لحالة الأحرفStringأو(U)Int*
String
أمثلة
أساسي
Query
Response
Query
Response
JSONExtractUInt
أُضيف في: v20.1.0 يحلّل JSON ويستخرج قيمة من النوع UInt. الصياغةjson— سلسلة JSON المطلوب تحليلها.Stringindices_or_keys— قائمة تضم صفرًا أو أكثر من الوسيطات، ويمكن أن يكون كلٌّ منها إما سلسلة نصية أو عددًا صحيحًا.Stringأو(U)Int*
0. UInt64
أمثلة
مثال على الاستخدام
Query
Response
JSONExtractUIntCaseInsensitive
أُضيف في: v25.8.0 يحلّل JSON ويستخرج قيمة من النوع UInt باستخدام مطابقة مفاتيح غير حساسة لحالة الأحرف. هذه الدالة مشابهة لـJSONExtractUInt.
البنية
json— سلسلة JSON المطلوب تحليلهاStringindices_or_keys— اختياري. فهارس أو مفاتيح للتنقل إلى الحقل. تستخدم المفاتيح مطابقة غير حساسة لحالة الأحرفStringأو(U)Int*
UInt64
أمثلة
بسيط
Query
Response
JSONHas
أُضيف في: v20.1.0 يتحقق من وجود القيمة أو القيم المُقدَّمة في مستند JSON. البنيةjson— سلسلة JSON المراد تحليلهاString[ ,indices_or_keys, ...]— قائمة تضم صفرًا أو أكثر من الوسائط.Stringأو(U)Int*
1 إذا كانت القيمة موجودة في json، وإلا فـ0 UInt8
أمثلة
مثال على الاستخدام
Query
Response
JSONKey
تم تقديمه في: v20.1.0 يعيد مفتاح حقل في كائن JSON بحسب فهرسه (ابتداءً من 1). إذا مُرِّر JSON كسلسلة نصية، فسيُحلَّل أولًا. الوسيط الثاني هو مسار JSON للتنقل داخل الكائنات المتداخلة. تعيد الدالة اسم المفتاح في الموضع المحدد. البنيةjson— سلسلة JSON المطلوب تحليلها.Stringindices_or_keys— قائمة اختيارية بالفهرسات أو المفاتيح تحدد مسارًا إلى عنصر متداخل. يمكن أن تكون كل وسيطة إما سلسلة نصية (للوصول بالمفتاح) أو عددًا صحيحًا (للوصول بالفهرس بدءًا من 1).StringأوInt*
String
أمثلة
مثال على الاستخدام
Query
Response
JSONLength
ظهر في: v20.1.0 يُرجع طول مصفوفة JSON أو كائن JSON. إذا لم تكن القيمة موجودة أو كان نوعها غير صحيح، فستُعاد القيمة0.
البنية
json— سلسلة JSON المراد تحليلهاString[, indices_or_keys, ...]— اختياري. قائمة تتضمن صفرًا أو أكثر من الوسائط.Stringأو(U)Int8/16/32/64
0 إذا لم تكن القيمة موجودة أو كان نوعها غير صحيح. UInt64
أمثلة
مثال على الاستخدام
Query
Response
JSONMergePatch
أُضيف في: v23.10.0 يعيد سلسلة كائن JSON مدمجة ناتجة عن دمج عدة كائنات JSON. الصيغةjsonMergePatch
المعاملات
json1[, json2, ...]— سلسلة واحدة أو أكثر تحتوي على JSON صالح.String
String
أمثلة
مثال على الاستخدام
Query
Response
JSONSharedDataPaths
قُدِّمت في: v24.8.0 يعيد قائمة المسارات المخزَّنة في بنية البيانات المشتركة ضمن عمود JSON. الصياغةjson— عمود JSON.JSON
Array(String)
أمثلة
مثال على الاستخدام
Query
Response
JSONSharedDataPathsWithTypes
أُضيفت في: v24.8.0 تعيد قائمة بالمسارات المخزَّنة في بنية البيانات المشتركة وأنواعها في كل صف ضمن عمود JSON. الصياغةjson— عمود JSON.JSON
Map(String, String)
أمثلة
مثال على الاستخدام
Query
Response
JSONType
استُحدث في: v20.1.0 يعيد نوع قيمة JSON. وإذا لم تكن القيمة موجودة، فستتم إعادةNull=0.
البنية
json— سلسلة JSON المطلوب تحليلهاStringjson[, indices_or_keys, ...]— قائمة تضم صفرًا أو أكثر من الوسائط، ويمكن أن يكون كل منها إما سلسلة نصية أو عددًا صحيحًا.Stringأو(U)Int8/16/32/64
Null=0 Enum
أمثلة
مثال على الاستخدام
Query
Response
JSON_EXISTS
أُضيف في: v21.8.0 إذا كانت القيمة موجودة في مستند JSON، فستُعاد1.
إذا لم تكن القيمة موجودة، فستُعاد 0.
البنية
1 إذا كانت القيمة موجودة في مستند JSON، وإلا فيعيد 0. UInt8
أمثلة
مثال على الاستخدام
Query
Response
JSON_QUERY
أُضيف في: v21.8.0 يُحلِّل JSON ويستخرج قيمةً بصيغة مصفوفة JSON أو كائن JSON. إذا لم تكن القيمة موجودة، فسيُعاد نص فارغ. الصيغةString
أمثلة
مثال على الاستخدام
Query
Response
JSON_VALUE
أُضيفت في: v21.11.0 تُحلّل هذه الدالة JSON وتستخرج قيمة منه كقيمة JSON scalar. وإذا لم تكن القيمة موجودة، فستُعاد سلسلة نصية فارغة افتراضيًا. تخضع هذه الدالة للإعدادات التالية:- عند استخدام SET
function_json_value_return_type_allow_nullable=true، ستُعادNULL. وإذا كانت القيمة من نوع معقّد (مثل: struct أو array أو map)، فستُعاد سلسلة نصية فارغة افتراضيًا. - عند استخدام SET
function_json_value_return_type_allow_complex=true، ستُعاد القيمة المعقّدة.
String
أمثلة
مثال على الاستخدام
Query
Response
dynamicElement
أُضيفت في: v24.1.0 تستخرج عمودًا بالنوع المحدد من عمودDynamic.
تتيح لك هذه الدالة استخراج قيم من نوع محدد من عمود Dynamic. إذا كان الصف يحتوي على قيمة
من النوع المطلوب، فإنها تُرجع تلك القيمة. وإذا كان الصف يحتوي على نوع مختلف أو NULL، فإنها تُرجع NULL
للأنواع المفردة أو مصفوفة فارغة لأنواع المصفوفات.
الصيغة
dynamic— عمود Dynamic المراد الاستخراج منه.Dynamictype_name— اسم النوع المراد استخراجه من بين الأنواع الممكنة (مثل: ‘String’ و’Int64’ و’Array(Int64)’).
Any
أمثلة
استخراج أنواع مختلفة من عمود Dynamic
Query
Response
dynamicType
أُضيف في: v24.1.0 يعيد اسم النوع الفعلي لكل صف في عمودDynamic.
بالنسبة إلى الصفوف التي تحتوي على NULL، تُعيد الدالة ‘None’. أما في جميع الصفوف الأخرى، فتُعيد نوع البيانات الفعلي
المخزَّن في ذلك الصف من عمود Dynamic (على سبيل المثال: ‘Int64’ و’String’ و’Array(Int64)’).
البنية
dynamic— عمود Dynamic المطلوب فحصه.Dynamic
String
أمثلة
فحص الأنواع في عمود Dynamic
Query
Response
isDynamicElementInSharedData
أُضيف في: v24.1.0 يعيدtrue للصفوف في عمود Dynamic المخزَّنة بتنسيق Variant المشترك بدلًا من تخزينها كأعمدة فرعية منفصلة.
عندما يكون لعمود Dynamic حد max_types، فإن القيم التي تتجاوز هذا الحد تُخزَّن بتنسيق ثنائي مشترك
بدلًا من فصلها إلى أعمدة فرعية منفصلة بحسب النوع. تحدد هذه الدالة الصفوف المخزَّنة بهذا التنسيق المشترك.
الصيغة
dynamic— عمود Dynamic المراد فحصه.Dynamic
true إذا كانت القيمة مخزّنة بتنسيق shared variant format، وfalse إذا كانت مخزّنة كعمود فرعي منفصل أو كانت NULL. Bool
أمثلة
التحقق من تنسيق التخزين في عمود Dynamic مع حد max_types
Query
Response
isValidJSON
أُضيف في: v20.1.0 يتحقق من أن السلسلة النصية المُمرَّرة بتنسيق JSON صالح. الصيغةjson— سلسلة JSON المطلوب التحقق من صحتهاString
1 إذا كانت السلسلة JSON صالحة، وإلا 0. UInt8
أمثلة
مثال على الاستخدام
Query
Response
Query
Response
prettyPrintJSON
أُضيفت في: v26.4.0 يعيد نسخة منسّقة من سلسلة JSON، مع أسطر جديدة ومسافات بادئة. البنيةjson— سلسلة JSON صالحة لتنسيقها.Stringindent— عدد المسافات لكل مستوى من الإزاحة. الافتراضي: 4. الحد الأقصى: 32UInt*
String
أمثلة
كائن بسيط
Query
Response
Query
Response
simpleJSONExtractBool
أُضيف في: v21.4.0 يحلّل قيمةtrue/false من قيمة الحقل المسمّى field_name.
النتيجة هي UInt8.
البنية
visitParamExtractBool
الوسيطات
json— بيانات JSON التي يُبحث فيها عن الحقل.Stringfield_name— اسم الحقل المطلوب البحث عنه.const String
1 إذا كانت قيمة الحقل هي true، وإلا فتعيد 0. وهذا يعني أن هذه الدالة ستُعيد 0 أيضًا في الحالات التالية، وليس في هذه الحالات فقط:
- إذا كان الحقل غير موجود.
- إذا كان الحقل يحتوي على
trueكسلسلة نصية، على سبيل المثال:{"field":"true"}. - إذا كان الحقل يحتوي على
1كقيمة رقمية.UInt8
Query
Response
simpleJSONExtractFloat
أُضيف في: v21.4.0 يحلّل قيمةFloat64 من قيمة الحقل المسمّى field_name.
إذا كان field_name حقلًا نصيًا، فسيحاول تحليل رقم من بداية السلسلة النصية.
إذا لم يكن الحقل موجودًا، أو كان موجودًا لكنه لا يحتوي على رقم، فسيُعيد 0.
الصياغة
visitParamExtractFloat
المعاملات
json— مستند JSON الذي يُبحث فيه عن الحقل.Stringfield_name— اسم الحقل المراد البحث عنه.const String
0. Float64
أمثلة
مثال على الاستخدام
Query
Response
simpleJSONExtractInt
قُدِّم في: v21.4.0 يحلّل قيمةInt64 من قيمة الحقل المسمّى field_name.
إذا كان field_name حقلًا نصيًا، فسيحاول تحليل رقم من بداية السلسلة النصية.
إذا لم يكن الحقل موجودًا، أو كان موجودًا ولكنه لا يحتوي على رقم، فستُعاد القيمة 0.
الصياغة
visitParamExtractInt
المعاملات
json— JSON الذي يُبحث فيه عن الحقل.Stringfield_name— اسم الحقل المراد البحث عنه.const String
0 Int64
أمثلة
مثال على الاستخدام
Query
Response
simpleJSONExtractRaw
أُضيف في: v21.4.0 يعيد قيمة الحقل المسمىfield_name كسلسلة String، بما في ذلك الفواصل.
الصياغة
visitParamExtractRaw
الوسيطات
json— نص JSON الذي يُبحث فيه عن الحقل.Stringfield_name— اسم الحقل المراد البحث عنه.const String
String
أمثلة
مثال على الاستخدام
Query
Response
simpleJSONExtractString
أُضيفت في: v21.4.0 يحلّل قيمةString محاطة بعلامتَي اقتباس مزدوجتين من قيمة الحقل المسمّى field_name.
تفاصيل التنفيذ
لا يوجد حاليًا دعم لنقاط الرمز بالتنسيق \uXXXX\uYYYY التي لا تنتمي إلى المستوى الأساسي متعدد اللغات (إذ تُحوَّل إلى CESU-8 بدلًا من UTF-8).
الصياغة
visitParamExtractString
الوسيطات
json— قيمة JSON التي يُبحث فيها عن الحقل.Stringfield_name— اسم الحقل المراد البحث عنه.const String
String
أمثلة
مثال على الاستخدام
Query
Response
simpleJSONExtractUInt
تم تقديمه في: v21.4.0 يستخرج قيمةUInt64 من قيمة الحقل المسمّى field_name.
إذا كان field_name حقلًا نصيًا، فسيحاول تحليل رقم من بداية السلسلة النصية.
إذا لم يكن الحقل موجودًا، أو كان موجودًا لكنه لا يحتوي على رقم، فستُعاد القيمة 0.
الصيغة
visitParamExtractUInt
الوسيطات
json— كائن JSON الذي يُبحث فيه عن الحقل.Stringfield_name— اسم الحقل المراد البحث عنه.const String
0 بخلاف ذلك UInt64
أمثلة
مثال على الاستخدام
Query
Response
simpleJSONHas
أُضيف في: v21.4.0 يتحقق مما إذا كان هناك حقل باسمfield_name.
البنية
visitParamHas
الوسائط
json— قيمة JSON التي يُبحث فيها عن الحقل.Stringfield_name— اسم الحقل المراد البحث عنه.const String
1 إذا كان الحقل موجودًا، وإلا فيُعيد 0 UInt8
أمثلة
مثال على الاستخدام
Query
Response
toJSONString
أُضيف في: v21.7.0 يحوِّل قيمة إلى تمثيلها بتنسيق JSON. وتُدعَم أنواع البيانات المختلفة والبُنى المتداخلة. تُخرج الأعداد الصحيحة بطول 64 بت أو أكثر (مثلUInt64 أو Int128) دون علامات اقتباس افتراضيًا. ويحدّد output_format_json_quote_64bit_integers هذا السلوك.
تُستبدل القيم الخاصة NaN و inf بـ null. فعِّل الإعداد output_format_json_quote_denormals لإظهارها.
عند تحويل قيمة Enum، تُخرج الدالة اسمها.
انظر أيضًا:
الصيغة
value— القيمة المطلوب إجراء تسلسل لها. يمكن أن تكون القيمة من أي نوع بيانات.Any
String
أمثلة
تسلسل Map
Query
Response
Query
Response