כיצד לנתח את JSON ב- C ++

How Parse Json C



הכוונה במדריך זה היא להבין את נתוני JSON וכיצד לנתח נתוני JSON ב- C ++. נדון בנתוני JSON, Object, Array, תחביר JSON ולאחר מכן נעבור על מספר דוגמאות עבודה כדי להבין את מנגנון הניתוח של נתוני JSON ב- C ++.

מהו JSON?

JSON הוא ייצוג מבוסס טקסט קל לאחסון והעברת נתונים מובנים בצורה מאורגנת. נתוני JSON מיוצגים בצורה של רשימות מסודרות וזוגות ערך-מפתח. JSON מייצג י ava ס קריפט אוֹ bject נ הפעלה. כפי שהשם המלא מציין, הוא נגזר מ- JavaScript. עם זאת, נתוני JSON נתמכים ברוב שפות התכנות הפופולריות.







הוא משמש לעתים קרובות להעברת הנתונים מהשרת לדף אינטרנט. הרבה יותר קל ונקי לייצג את הנתונים המובנים ב- JSON מאשר XML.



חוק תחביר JSON

להלן כללי התחביר של JSON:



  1. נתוני JSON תמיד צריכים להיות בצורה של זוגות ערך-מפתח.
  2. נתוני JSON מופרדים באמצעות פסיקים.
  3. סוגר מתולתל משמש לייצוג אובייקט JSON.
  4. סוגר מרובע משמש לייצוג מערך JSON.

מהם נתוני JSON?

נתוני JSON מיוצגים בצורה של זוגות ערך-מפתח. הדבר דומה למילון או חשיש בשפות תכנות אחרות.





שם: דרייק

זוהי דוגמה לנתוני JSON פשוטים. המפתח כאן הוא שם ודרייק הוא הערך המתאים. המפתח, כלומר, השם והערך, כלומר, דרייק מופרדים באמצעות נקודתיים.



סיומת קובץ JSON

נתוני JSON מאוחסנים בדרך כלל בקובץ עם הסיומת של .json. לדוגמה, כדי לאחסן את נתוני העובד, אתה יכול פשוט לקרוא לקובץ כ'עובד.ייסון '. זה יהיה קובץ טקסט פשוט. לאחר מכן תוכל לפתוח קובץ JSON זה בכל אחד מעורכי הטקסט האהובים עליך.

אובייקט JSON

אובייקט ה- JSON אינו אלא נתוני JSON הכלולים בתוך הפלטה המתולתלת. להלן אובייקט JSON לדוגמא:

{
שֵׁם:דרייק,
כרטיס עובד:23547a,
מכשיר טלפון: 23547,
מַחלָקָה:לְמַמֵן
}

אובייקט JSON יכול להכיל נתוני JSON מרובים. כל נתוני JSON מופרדים בפסיק. נתוני JSON מיוצגים כזוגות ערך-מפתח. המפתח, כלומר, השם והערך, כלומר, דרייק מופרדים באמצעות נקודתיים. בדוגמה שלמעלה, ישנם ארבעה זוגות ערך-מפתח. המפתח הראשון הוא שם; דרייק הוא הערך המתאים לו. באופן דומה, EmployeeID, טלפון ומחלקה הם שלושת המפתחות האחרים.

מערך JSON

מערך JSON יכול להכיל מספר אובייקטים JSON המופרדים בפסיקים. מערך JSON מוקף בתוך סוגר מרובע. בואו נסתכל על דוגמה של מערך JSON:

'סטודנטים':[
{'שם פרטי':'שון', 'שם משפחה':'חום'},
{'שם פרטי':'דרייק', 'שם משפחה':'וויליאמס'},
{'שם פרטי':'טום', 'שם משפחה':'טוֹחֵן'},
{שם פרטי:פיטר,שם משפחה:ג'ונסון}
]

זוהי דוגמה למערך JSON. כאן התלמידים מוקפים בסוגר מרובע, כלומר מערך, והוא מכיל ארבעה אובייקטים של JSON. כל אחד מהאובייקטים הללו מיוצג בצורה של זוגות ערך-מפתח ומופרד בפסיק.

קובץ JSON לדוגמה

כעת, מכיוון שהבנו נתוני JSON, אובייקטים של JSON, מערך JSON, בואו נסתכל על דוגמה לקובץ JSON:

{
שם פרטי:שון,
שם משפחה:חום,
תעודת סטודנט: 21453,
מַחלָקָה:מחשב Sc.,
נושאים:[מתמטיקה,פי,Chem]
}

ניתוח ספריות ב- C ++:

אין פתרון מקורי לניתוח נתוני JSON ב- C ++. עם זאת, ישנן מספר ספריות לנתח נתוני JSON ב- C ++. במאמר זה, אנו הולכים לבדוק את שתי הספריות הפופולריות ביותר כדי לנתח נתוני JSON ב- C ++. להלן קישורי GitHub לניתוח נתוני JSON:

  1. https://github.com/nlohmann/json
  2. https://github.com/Tencent/rapidjson/

ייתכן שתרצה להוריד את הספריות האלה בכדי שתוכל לבצע את הדוגמאות המוצגות להלן.

דוגמאות

כעת, יש לנו הבנה בסיסית של נתוני JSON, אובייקטים, מערכים וספריות ניתוח זמינות. הבה נבחן כעת כמה דוגמאות לניתוח נתוני JSON ב- C ++:

  • דוגמה 1: ניתוח JSON ב- C ++
  • דוגמה 2: ניתוח וסידור JSON בסידור C ++
  • דוגמה 3: ניתוח JSON ב- C ++

עבור דוגמה 1 ודוגמא 2, אנו הולכים לעשות שימוש בספריית nlohmann. במקרה של דוגמה 3, נשתמש בספריית RapidJSON.

דוגמה 1: ניתוח JSON ב- C ++

בתוכנית דוגמה זו, נדגים כיצד לגשת לערכים של נתוני JSON ב- C ++.

#לִכלוֹל
#כלול 'json.hpp'

באמצעות json=נלוהמן::json;

intרָאשִׁי()
{

// jdEmployees
json jd מעסיקים=
{
{'שם פרטי','שון'},
{'שם משפחה','חום'},
{'תעודת סטודנט',21453},
{'מַחלָקָה','מחשב Sc.'}
};

// גש לערכים
שעה (ות::חוּטfName=עובדים jd.ערך('שם פרטי', 'אופס');
שעה (ות::חוּטl שם=עובדים jd.ערך('שם משפחה', 'אופס');
intsID=עובדים jd.ערך('תעודת סטודנט', 0);
שעה (ות::חוּטמחלקה=עובדים jd.ערך('מַחלָקָה', 'אופס');

// הדפס את הערכים
שעה (ות::עֲלוּת << 'שם פרטי: ' <<fName<<שעה (ות::endl;
שעה (ות::עֲלוּת << 'שם משפחה: ' <<l שם<<שעה (ות::endl;
שעה (ות::עֲלוּת << 'תעודת סטודנט: ' <<sID<<שעה (ות::endl;
שעה (ות::עֲלוּת << 'מחלקה:' <<מחלקה<<שעה (ות::endl;

לַחֲזוֹר 0;
}

דוגמה 2: ניתוח וסידור JSON בסידור C ++

בתוכנית לדוגמא זו, אנו הולכים לראות כיצד לנתח ולסדר סדרת JSON ב- C ++. אנו משתמשים ב- json :: parse () כדי לנתח את נתוני JSON.

#לִכלוֹל
#כלול 'json.hpp'
#לִכלוֹל

באמצעות json=נלוהמן::json;

intרָאשִׁי()
{
// להלן טקסט JSON
לְהַשְׁחִירטֶקסט[] =ר'(
{
'
סֵפֶר': {
'
רוֹחַב': 450,
'
גוֹבַה': 30,
'
כותרת':'שלום עולם',
'
היא ביוגרפיה': שקר,
'
NumOfCopies': 4,
'
מספרי הספרייה': [2319, 1406, 3854, 987]
}
}
) '
;

// בואו לנתח ולסדר את JSON
json j_complete=json::לְנַתֵחַ(טֶקסט);
שעה (ות::עֲלוּת <<שעה (ות::setw(4) <<j_complete<<שעה (ות::endl;
}

דוגמה 3: ניתוח JSON ב- C ++

כעת, נדגים כיצד לנתח מחרוזת JSON באמצעות ספריית RapidJSON. RapidJSON נוצרה במקור בהשראת ה- RapidXML. בתוכנית לדוגמה זו אנו מנתחים מחרוזת JSON ל- DOM. הכרזנו mydoc מסוג Document ולאחר מכן השתמשנו בשיטת mydoc.parse () כדי לנתח את מחרוזת JSON.

#לִכלוֹל
#כלול 'rapidjson/writer.h'
#כלול 'rapidjson/document.h'
#כלול 'rapidjson/stringbuffer.h'

שימוש במרחב שמות rapidjson;

intרָאשִׁי()
{

קבוע לְהַשְׁחִיר*json= '{'שם פרטי':'שון','שם משפחה':'חום','empId': 21453,
'
מַחלָקָה':'מחשב Sc.'}';

// נתח את מחרוזת JSON ל- DOM
תעד את mydoc;
mydoc.לְנַתֵחַ(json);

// DOM למחרוזת
מאגר StringBuffer;
סוֹפֵר<StringBuffer>סוֹפֵר(בַּלָם);

mydoc.לְקַבֵּל(סוֹפֵר);

// הדפס את הפלט
שעה (ות::עֲלוּת <<בַּלָם.GetString() <<שעה (ות::endl;

לַחֲזוֹר 0;
}

סיכום

במאמר זה דנו בקצרה JSON נתונים, אובייקט, מערך ותחביר. כידוע, אין פתרון מקורי לניתוח נתוני JSON ב- C ++; השתמשנו בשתי ספריות שונות כדי לנתח נתוני JSON ב- C ++. בדקנו שלוש דוגמאות שונות כדי להדגים את מנגנון ניתוח הנתונים של JSON ב- C ++. בהשוואה לספריית nlohmann, ה- RapidJSON קטן, מהיר וידידותי לזיכרון.