توفر Java مكتبتين قويتين جدًا للعمل مع بيانات JSON، أي: جاكسون و جيسون المكتبات. غالبًا ما نحتاج إلى تحويل استجابات JSON إلى خريطة للعمل مع بيانات JSON التي تم إرجاعها بسهولة.
يمكننا بسهولة تحويل بيانات JSON إلى خريطة لأن تنسيق JSON هو في الأساس مجموعة زوجية ذات قيمة مفتاحية وتقوم الخريطة أيضًا بتخزين البيانات في أزواج قيمة المفتاح.
دعونا نفهم كيف يمكننا استخدام مكتبات JACKSON وGson لتحويل بيانات JSON إلى خريطة. نحن ندرك أيضًا كيف يمكننا استخدام كلتا المكتبتين لتحويل بيانات الخريطة إلى JSON.
لنفترض أن لدينا ملف Sample.json في النظام يحتوي على البيانات التالية:
jpa مقابل السبات
{ 'Name' : 'Donal', 'Mobile' : '89346724', 'Designation' : 'Sr. Salesforce Developer', 'Pet' : 'Dog', 'Address' : 'AMERICA' }
مكتبة جاكسون
من أجل تحويل بيانات JSON إلى Java Map، فإننا نستعين بمكتبة JACKSON. نضيف التبعية التالية في ملف POM.xml للعمل مع مكتبة JACKSON.
com.fasterxml.jackson.core jackson-databind 2.5.3
دعونا ننفذ منطق تحويل بيانات JSON إلى خريطة باستخدام فئات ObjectMapper وFile وTypeReference.
JacksonConvertJSONToMap.java
سلسلة من الطول
// import required classes and packages package javaTpoint.JavaExample; import java.io.File; // for reading file data import java.util.Map; import com.fasterxml.jackson.core.type.TypeReference; import com.fasterxml.jackson.databind.ObjectMapper; // create JacksonConvertJSONToMap class to convert JSON data into Java Map public class JacksonConvertJSONToMap { // main() method start public static void main(String args[]) { // create instance of the ObjectMapper class to map JSON data ObjectMapper mapper = new ObjectMapper(); // create instance of the File class File fileObj = new File('C:\Users\rastogi ji\OneDrive\Desktop\Sample.json'); // use try-catch block to convert JSON data into Map try { // read JSON data from file using fileObj and map it using ObjectMapper and TypeReference classes Map userData = mapper.readValue( fileObj, new TypeReference<map>() { }); // print all key-value pairs System.out.println('Name : ' + userData.get('Name')); System.out.println('Mobile : ' + userData.get('Mobile')); System.out.println('Designation : ' + userData.get('Designation')); System.out.println('Pet : ' + userData.get('Pet')); System.out.println('Address : ' + userData.get('Address')); } catch (Exception e) { // show error message e.printStackTrace(); } } } </map>
انتاج:
لنأخذ مثالاً آخر لمكتبة جاكسون لفهم كيف يمكننا تحويل خريطة Java إلى JSON لأننا غالبًا ما نحتاج إلى تمرير بيانات الخريطة إلى API كـ JSON. لذلك، في هذا المثال، نقوم بتحويل بيانات الخريطة إلى JSON وتخزينها في ملف.
ريجكس جافا
JacksonConvertMapToJson.java
// import required classes and packages package javaTpoint.JavaExample; import java.io.File; import java.util.HashMap; import java.util.Map; import java.util.Scanner; import com.fasterxml.jackson.databind.ObjectMapper; //create JacksonConvertMapToJSON class to convert Map data into JSON public class JacksonConvertMapToJSON { // main() method start public static void main(String args[]) { // create instance of the ObjectMapper class ObjectMapper mapper = new ObjectMapper(); // declare and initialize map (key is of type String and value is of type Object) Map userData = new HashMap(); // declare variables and array to store user entered data String name, price, model; String colors[]; // create an instance of the Scanner class Scanner sc = new Scanner(System.in); // take inputs from the user and store them to the variables System.out.println('Enter the name of the car: '); name = sc.nextLine(); System.out.println('Enter the modal number of the car: '); model = sc.nextLine(); System.out.println('Enter the price of the car: '); price = sc.nextLine(); colors = new String[3]; colors[0] = 'Red'; colors[1] = 'Black'; colors[2] = 'White'; // close Scanner class object sc.close(); // fill userData map userData.put('Car', name); userData.put('Price', price); userData.put('Model', model); userData.put('Colors', colors); // use try-catch block to convert Java map into JSON try { // use ObjectMapper class to convert Map data into JSON and write it into Sample.json file mapper.writeValue(new File('C:\Users\rastogi ji\OneDrive\Desktop\Sample.json'), userData); System.out.println('Map data successfully written to the Sample.json file.'); } catch (Exception e) { // handle exception e.printStackTrace(); } } }
انتاج:
مكتبة جيسون
جيسون المكتبة هي مكتبة أخرى يمكننا استخدامها لتحويل بيانات JSON إلى خريطة أو بيانات الخريطة إلى JSON. من أجل استخدام مكتبة Gson، نحتاج إلى إضافة التبعية التالية في ملف POM.xml الخاص بنا.
com.google.code.gson gson 2.8.3
GsonConvertJSONToMap.java
قائمة مرتبطة وقائمة الصفيف
//import required classes and packages package javaTpoint.JavaExample; import java.util.HashMap; import java.util.Map; import com.google.gson.Gson; import com.google.gson.reflect.TypeToken; import java.io.IOException; import java.nio.file.Files; import java.nio.file.Paths; //create GsonConvertJSONToMap class to convert JSON data into Java Map public class GsonConvertJSONToMap { // main() method start public static void main(String args[]) { // create variable loc that store location of the Sample.json file String loc = 'C:\Users\rastogi ji\OneDrive\Desktop\Sample.json'; String result; try { // read byte data from the Sample.json file and convert it into String result = new String(Files.readAllBytes(Paths.get(loc))); // store string data into Map by using TypeToken class Map userData = new Gson().fromJson(result, new TypeToken<hashmap>() { }.getType()); // print all key-value pairs System.out.println('Name : ' + userData.get('Name')); System.out.println('Mobile : ' + userData.get('Mobile')); System.out.println('Designation : ' + userData.get('Designation')); System.out.println('Pet : ' + userData.get('Pet')); System.out.println('Address : ' + userData.get('Address')); } catch (IOException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } } } </hashmap>
انتاج:
لنأخذ مثالاً آخر لمكتبة Gson لفهم كيفية تحويل خريطة Java إلى JSON. يختلف استخدام مكتبة Gson قليلاً عن مكتبة Jackson.
GsonConvertMapToJson.java
//import required classes and packages package javaTpoint.JavaExample; import java.io.File; import java.io.FileWriter; import java.io.IOException; import java.util.HashMap; import java.util.Map; import java.util.Scanner; import com.google.gson.Gson; //create GsonConvertMapToJson class to convert Map data into JSON public class GsonConvertMapToJson { // main() method start public static void main(String args[]) { // declare and initialize map(key is of type String and value is of type Object) Map userData = new HashMap(); // declare variables and array to store user entered data String name, price, model; String colors[]; // create an instance of the Scanner class Scanner sc = new Scanner(System.in); // take inputs from the user and store them to the variables System.out.println('Enter the name of the car: '); name = sc.nextLine(); System.out.println('Enter the modal number of the car: '); model = sc.nextLine(); System.out.println('Enter the price of the car: '); price = sc.nextLine(); colors = new String[3]; colors[0] = 'Red'; colors[1] = 'Black'; colors[2] = 'White'; // close Scanner class object sc.close(); // fill userData map userData.put('Car', name); userData.put('Price', price); userData.put('Model', model); userData.put('Colors', colors); // use try-catch block to convert Java map into JSON try (FileWriter file = new FileWriter('C:\Users\rastogi ji\OneDrive\Desktop\Sample.json')) { // create instance of the Gson Gson gsonObj = new Gson(); // convert userData map to json string String jsonStr = gsonObj.toJson(userData); // use write() of File to write json string into file file.write(jsonStr); // use flush() method to flushes stream file.flush(); System.out.println('Map data successfully written to the Sample.json file.'); } catch (IOException e) { // error handling and exceptions e.printStackTrace(); } } }
انتاج: