logo

כיצד להמיר מחרוזת לאובייקט JSON ב-Java?

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

 jsonStringExample = { 'name' : 'Ronaldo', 'nickname' : 'Sam', 'id' : 312, 'age' : 21, 'height' : 163, 'lastOverScore' : [4, 1, 6, 6, 2, 1] } 

פורמט ה-JSON הנ'ל מכיל שש תכונות שמתוכם השתיים הראשונות הן מחרוזות, שלושתן הבאות הן מספריות ולבסוף מערך JSON.

המר מחרוזת JSON לאובייקט JSON

ישנן שלוש הספריות הבאות המשמשות להמרת String ל-JSON Object ב-Java:

  • שימוש בספריית Gson
  • שימוש ב-JSON-Simple Library
  • ספריית ג'קסון

שימוש בספריית Gson

Gson הוא קוד פתוח ועשיר Java הספרייה שסופקה על ידי Google. הוא משמש להמרת JSON String ל-JSON Object שוות ו-JSON Object ל-JSON String. שורת הקוד הבאה משמשת להמרת JSON String ל-JSON Object.

 Gson g = new Gson(); Student s = g.fromJson(jsonString, Student.class) 

אנו יכולים גם להמיר JSON Object ל-JSON String על ידי שימוש ב- toJson() שיטה.

 String str = g.toJson(p); 

שימוש ב-JSON-Simple Library

זוהי עוד ספריית Java בקוד פתוח המשמשת להמרת מחרוזת JSON לאובייקט JSON. היתרון של ספריית JSON-Simple הוא בגודלה הקטן. זה מושלם איפה שסביבת אילוצי הזיכרון חשובה. שימו לב שהוא תואם גם ל-JDK 1.2. זה אומר שאנחנו יכולים להשתמש בו עם פרויקט מדור קודם שאינו ב-Java 5. אנו משתמשים בהצהרות הבאות כדי להמיר את מחרוזת JSON ל-JSON Object.

 JSONParser parser = new JSONParser(); JSONObject json = (JSONObject) parser.parse(stringToParse); 

שימוש בספריית ג'קסון

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

 Student student = new ObjectMapper().readValue(jsonString, Student.class); 

החיסרון של ספריית ג'קסון הוא שהיא דורשת לפחות JDK 1.5. לכן, אם בגרסה ישנה יותר עסקינן, היא לא תתאים לשם. חסרון נוסף של ספריית ג'קסון הוא שהיא אינה תומכת ב-J2ME.

דוגמה להמרת אובייקט JSON ל-JSON

בתוכנית הבאה, המרנו מחרוזת JSON לאובייקט JSON.

JsonStringToJsonObjectExample.java

 import org.json.JSONObject; import org.json.JSONArray; public class JsonStringToJsonObjectExample { public static void main(String args[]) { String str = &apos;[{&apos;No&apos;:&apos;17&apos;,&apos;Name&apos;:&apos;Andrew&apos;},{&apos;No&apos;:&apos;18&apos;,&apos;Name&apos;:&apos;Peter&apos;}, {&apos;No&apos;:&apos;19&apos;,&apos;Name&apos;:&apos;Tom&apos;}]&apos;; JSONArray array = new JSONArray(str); for(int i=0; i <array.length(); i++) { jsonobject object="array.getJSONObject(i);" system.out.println(object.getstring('no')); system.out.println(object.getstring('name')); } < pre> <p> <strong>Output:</strong> </p> <pre> 17 Andrew 18 Peter 19 Tom </pre> <p>Let&apos;s see another example.</p> <p> <strong>JsonStringToJsonObjectExample2.java</strong> </p> <pre> import org.json.*; public class JsonStringToJsonObjectExample2 { public static void main(String[] args) { String string = &apos;{&apos;name&apos;: &apos;Sam Smith&apos;, &apos;technology&apos;: &apos;Python&apos;}&apos;; JSONObject json = new JSONObject(string); System.out.println(json.toString()); String technology = json.getString(&apos;technology&apos;); System.out.println(technology); } } </pre> <p> <strong>Output:</strong> </p> <pre> Sam Smith Python </pre> <hr></array.length();>

בואו נראה דוגמה נוספת.

JsonStringToJsonObjectExample2.java

ערימות java
 import org.json.*; public class JsonStringToJsonObjectExample2 { public static void main(String[] args) { String string = &apos;{&apos;name&apos;: &apos;Sam Smith&apos;, &apos;technology&apos;: &apos;Python&apos;}&apos;; JSONObject json = new JSONObject(string); System.out.println(json.toString()); String technology = json.getString(&apos;technology&apos;); System.out.println(technology); } } 

תְפוּקָה:

 Sam Smith Python