Hướng Dẫn Và Ví Dụ Java JSON Processing API (JSONP)
Có thể bạn quan tâm
- Tất cả tài liệu
- Java
- Java Basic
- Java Collections Framework
- Java IO
- Java New IO
- Java Date Time
- Servlet/JSP
- Eclipse Tech
- SWT
- RCP
- RAP
- Eclipse Plugin Tools
- XML & HTML
- Java Opensource
- Java Application Servers
- Maven
- Gradle
- Servlet/Jsp
- Thymeleaf
- Spring
- Spring Boot
- Spring Cloud
- Struts2
- Hibernate
- Java Web Service
- JavaFX
- SWT
- Oracle ADF
- Android
- iOS
- Python
- Swift
- C#
- C/C++
- Ruby
- Dart
- Batch
- Database
- Oracle
- MySQL
- SQL Server
- PostGres
- Other Database
- Oracle APEX
- Report
- Client
- ECMAScript / Javascript
- TypeScript
- NodeJS
- ReactJS
- Flutter
- AngularJS
- HTML
- CSS
- Bootstrap
- OS
- Ubuntu
- Solaris
- Mac OS
- VPS
- Git
- SAP
- Amazon AWS
- Khác
- Chưa phân loại
- Phần mềm & ứng dụng tiện ích
- VirtualBox
- VmWare
- JSON là gì?
- Các thư viện phân tích Json
- Json Processing API
- Tạo Maven Project
- Tổng quan về JSON-P
- Ví dụ với JSON-P
- Ví dụ với JsonWriter
- Ví dụ với JsonParser
1. JSON là gì?
JSON (JavaScript Object Notation) là một dữ liệu văn bản có cấu trúc, các phần tử của nó là một cặp khóa và giá trị, giá trị của nó cũng có thể là một phần tử (khóa & giá trị) khác, đôi khi giá trị cũng có thể là một mảng.Đây là một cấu trúc dữ liệu JSON:{ "name" : "Tran", "address" : "Hai Duong, Vietnam", "phones" : [0121111111, 012222222] }Ví dụ với các cặp khóa giá trị lồng nhau:{ "id": 111 , "name":"Microsoft", "websites": [ "http://microsoft.com", "http://msn.com", "http://hotmail.com" ], "address": { "street":"1 Microsoft Way", "city":"Redmond" } }2. Các thư viện phân tích Json
Có rất nhiều thư viện Java mã nguồn mở giúp bạn phân tích dữ liệu Json. Dưới đây là danh sách các thư viện như vậy:- json.org
- Jackson
- Google GSON
- json-lib
- javax json
- json-simple
- json-smart
- flexjson
- fastjson
3. Json Processing API
JSON Processing (JSR-353) API được giới thiệu trong đặc tả của Java EE 7, điều đó có nghĩa là thư viện của nó sẵn có trên các Web Server tương thích Java EE 7. Bạn cũng có thể download các thư viện này hoặc sử dụng Maven.Với Maven:<!-- http://mvnrepository.com/artifact/org.glassfish/javax.json --> <dependency> <groupId>org.glassfish</groupId> <artifactId>javax.json</artifactId> <version>1.0.4</version> </dependency>JSON-P được phân chia thành hai API cốt lõi:- API Streaming (javax.json.stream),
- JSON API Object Model (javax.json).
4. Tạo Maven Project
Bạn có thể tạo nhanh một Maven project và khai báo sử dụng thư viện JSON-PThư viện maven:<!-- http://mvnrepository.com/artifact/org.glassfish/javax.json --> <dependency> <groupId>org.glassfish</groupId> <artifactId>javax.json</artifactId> <version>1.0.4</version> </dependency>pom.xml<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>org.o7planning</groupId> <artifactId>JSONPTutorial</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>jar</packaging> <name>JSONPTutorial</name> <url>http://maven.apache.org</url> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> </properties> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>3.8.1</version> <scope>test</scope> </dependency> <!-- http://mvnrepository.com/artifact/org.glassfish/javax.json --> <dependency> <groupId>org.glassfish</groupId> <artifactId>javax.json</artifactId> <version>1.0.4</version> </dependency> </dependencies> </project>5. Tổng quan về JSON-P
Một số Interface quan trọng của JSON API là:Interface | Description |
javax.json.JsonReader | Bạn có thể sử dụng nó để đọc đối tượng JSON hoặc một mảng và có được đối tượng JsonObject. Bạn có thể có được JsonReader từ lớp Json hoặc JsonReaderFactory. |
javax.json.JsonWriter | Bạn có thể sử dụng lớp này để ghi đối tượng JSON vào luồng đầu ra (Output Stream). |
javax.json.stream.JsonParser | Nó làm việc như một bộ phân tích đầy đủ, và cung cấp luồng (stream) hỗ trợ đọc các đối tượng JSON. |
javax.json.stream.JsonGenerator | Bạn có thể sử dụng lớp này để ghi các đối tượng JSON vào các luồng đầu ra (Output Stream). |
javax.json.Json | Lớp này được sử dụng để tạo ra các đối tượng xử lý JSON. |
6. Ví dụ với JSON-P
Đây là một file dữ liệu JSON:company.txt{ "id": 111 , "name":"Microsoft", "websites": [ "http://microsoft.com", "http://msn.com", "http://hotmail.com" ], "address":{ "street":"1 Microsoft Way", "city":"Redmond" } }Address.javapackage org.o7planning.jsonptutorial.beans; public class Address { private String street; private String city; public Address() { } public Address(String street, String city) { this.street = street; this.city = city; } public String getStreet() { return street; } public void setStreet(String street) { this.street = street; } public String getCity() { return city; } public void setCity(String city) { this.city = city; } @Override public String toString() { return street + ", " + city; } }Company.javapackage org.o7planning.jsonptutorial.beans; public class Company { private int id; private String name; private String[] websites; private Address address; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String[] getWebsites() { return websites; } public void setWebsites(String[] websites) { this.websites = websites; } public Address getAddress() { return address; } public void setAddress(Address address) { this.address = address; } @Override public String toString() { StringBuilder sb = new StringBuilder(); sb.append("\n id:" + this.id); sb.append("\n name:" + this.name); if (this.websites != null) { sb.append("\n website: "); for (String website : this.websites) { sb.append(website + ", "); } } if (this.address != null) { sb.append("\n address:" + this.address.toString()); } return sb.toString(); } }JsonReader là một đối tượng dùng để đọc dữ liệu JSON, bạn có thể có được đối tượng JsonReader từ class Json hoặc từ JsonReaderFactory.InputStream input = new FileInputStream("company.txt"); // Lấy ra đối tượng JsonReader từ class Json JsonReader jsonReader1 = Json.createReader(input); // Hoặc từ Factory JsonReaderFactory factory = Json.createReaderFactory(null); JsonReader jsonReader2 = factory.createReader(input);JsonReaderExample.javapackage org.o7planning.jsonptutorial; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import javax.json.Json; import javax.json.JsonArray; import javax.json.JsonObject; import javax.json.JsonReader; import javax.json.JsonValue; import org.o7planning.jsonptutorial.beans.Address; import org.o7planning.jsonptutorial.beans.Company; public class JsonReaderExample { public static void main(String[] args) throws IOException { InputStream input = new FileInputStream("company.txt"); // Tạo đối tượng JsonReader từ class Json. JsonReader jsonReader = Json.createReader(input); // Lấy ra đối tượng JsonObject mô tả dữ liệu JSON. JsonObject rootJSON = jsonReader.readObject(); // Close resources jsonReader.close(); input.close(); // Tạo đối tượng Company rỗng. Company company = new Company(); company.setId(rootJSON.getInt("id")); company.setName(rootJSON.getString("name")); // Đọc thông tin mảng các website trong JSON. JsonArray jsonArray = rootJSON.getJsonArray("websites"); String[] websites = new String[jsonArray.size()]; int index = 0; for(JsonValue value : jsonArray){ websites[index++] = value.toString() ; } company.setWebsites(websites); // Lấy ra đối tượng JsonObject nằm trong đối tượng json. JsonObject addressJSON = rootJSON.getJsonObject("address"); Address address = new Address(); address.setStreet(addressJSON.getString("street")); address.setCity(addressJSON.getString("city")); company.setAddress(address); // Ghi thông tin ra. System.out.println(company); } }Chạy ví dụ:Chú ý: Tên của thuộc tính (attribute) cần phải đặt trong dấu "" (Dấu nháy kép), chẳng hạn:
- "id": 111
Đôi khi dữ liệu JSON có tên thuộc tính không nằm trong dấu ngặc kép, một số bộ phân tích JSON vẫn hiểu và cho phép điều đó, tuy nhiên bộ phân tích JSON-P không cho phép, nếu bạn sử dụng Java JSON-P phân tích một dữ liệu JSON có tên thuộc tính không nằm trong dấu nháy kép, bạn sẽ nhận được một ngoại lệ:
javax.json.stream.JsonParsingException: Unexpected char 105 at (line no=xx, column no=xx, offset=xx)
7. Ví dụ với JsonWriter
JsonWriterExample.javapackage org.o7planning.jsonptutorial; import java.io.File; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.OutputStream; import javax.json.Json; import javax.json.JsonArrayBuilder; import javax.json.JsonObject; import javax.json.JsonObjectBuilder; import javax.json.JsonWriter; import org.o7planning.jsonptutorial.beans.Address; import org.o7planning.jsonptutorial.beans.Company; public class JsonWriterExample { public static void main(String[] args) throws FileNotFoundException { Company company = createCompany(); // Object Builder JsonObjectBuilder companyBuilder = Json.createObjectBuilder(); // Object Builder JsonObjectBuilder addressBuilder = Json.createObjectBuilder(); // Array Builder JsonArrayBuilder websitesBuilder = Json.createArrayBuilder(); for (String website : company.getWebsites()) { websitesBuilder.add(website); } Address address = company.getAddress(); addressBuilder.add("street", address.getStreet()).add("city", address.getCity() ); companyBuilder.add("id", company.getId()).add("name", company.getName() ); companyBuilder.add("websites", websitesBuilder); companyBuilder.add("address", addressBuilder); // Đối tượng JsonObject gốc. JsonObject rootJSONObject = companyBuilder.build(); System.out.println("Root JsonObject: " + rootJSONObject); // Ghi ra file. File outFile= new File("C:/test/company2.txt"); outFile.getParentFile().mkdirs(); OutputStream os = new FileOutputStream(outFile); JsonWriter jsonWriter = Json.createWriter(os); jsonWriter.writeObject(rootJSONObject); jsonWriter.close(); } public static Company createCompany() { Company company = new Company(); company.setId(123); company.setName("Apple"); String[] websites = { "http://apple.com"}; company.setWebsites(websites); Address address = new Address(); address.setCity("Cupertino"); address.setStreet("1 Infinite Loop"); company.setAddress(address); return company; } }Chạy ví dụ:8. Ví dụ với JsonParser
Ở trên bạn đã làm việc với JsonReader để đọc nội dung file json, toàn bộ nội dung Json được đối tượng hóa và lưu trữ trên bộ nhớ, cách này chỉ phù hợp khi bạn làm việc với các dữ liệu Json nhỏ. Trong trường hợp dữ liệu lớn bạn nên sử dụng JsonParser để phân tích dữ liệu Json. JsonParser làm việc gần giống với cách phân tích XML của SAX. JsonParser không lưu trữ dữ liệu đọc được trên bộ nhớ.Trên code của bạn gọi các phương thức next() để JsonParser phân tích phần tử tiếp theo Json, nó sẽ phát sự kiện mỗi khi phân tích xong một phần tử. Bộ phân tích này có thể phát ra các sự kiện sau:- START_OBJECT
- END_OBJECT
- START_ARRAY
- END_ARRAY
- KEY_NAME
- VALUE_STRING
- VALUE_NUMBER
- VALUE_TRUE
- VALUE_FALSE
- VALUE_NULL.
- getString()
- getInt()
- ....
Các thư viện mã nguồn mở Java
- Hướng dẫn và ví dụ Java JSON Processing API (JSONP)
- Hướng dẫn sử dụng Scribe OAuth Java API với Google OAuth 2
- Lấy thông tin phần cứng máy tính trong ứng dụng Java
- Restfb Java API cho Facebook
- Tạo Credentials cho Google Drive API
- Hướng dẫn sử dụng Java JDOM2 phân tích tài liệu XML
- Hướng dẫn và ví dụ Java XStream
- Hướng dẫn sử dụng Java Jsoup phân tích HTML
- Lấy thông tin địa lý dựa trên địa chỉ IP sử dụng GeoIP2 Java API
- Đọc Ghi file excel trong Java sử dụng Apache POI
- Khám phá Facebook Graph API
- Java Sejda WebP ImageIO chuyển đổi các định dạng ảnh sang WEBP
- Java JAVE Chuyển đổi audio và video sang định dạng mp3
- Thao tác với tập tin và thư mục trên Google Drive sử dụng Java
Các thư viện mã nguồn mở Java
- Hướng dẫn và ví dụ Java JSON Processing API (JSONP)
- Hướng dẫn sử dụng Scribe OAuth Java API với Google OAuth 2
- Lấy thông tin phần cứng máy tính trong ứng dụng Java
- Restfb Java API cho Facebook
- Tạo Credentials cho Google Drive API
- Hướng dẫn sử dụng Java JDOM2 phân tích tài liệu XML
- Hướng dẫn và ví dụ Java XStream
- Hướng dẫn sử dụng Java Jsoup phân tích HTML
- Lấy thông tin địa lý dựa trên địa chỉ IP sử dụng GeoIP2 Java API
- Đọc Ghi file excel trong Java sử dụng Apache POI
- Khám phá Facebook Graph API
- Java Sejda WebP ImageIO chuyển đổi các định dạng ảnh sang WEBP
- Java JAVE Chuyển đổi audio và video sang định dạng mp3
- Thao tác với tập tin và thư mục trên Google Drive sử dụng Java
Các bài viết mới nhất
- Xử lý lỗi 404 trong Flutter GetX
- Ví dụ đăng nhập và đăng xuất với Flutter Getx
- Hướng dẫn và ví dụ Flutter NumberTextInputFormatter
- Hướng dẫn và ví dụ Flutter multi_dropdown
- Hướng dẫn và ví dụ Flutter flutter_form_builder
- Hướng dẫn và ví dụ Flutter GetX obs Obx
- Hướng dẫn và ví dụ Flutter GetX GetBuilder
- Từ khoá part và part of trong Dart
- Hướng dẫn và ví dụ Flutter InkWell
- Bài thực hành Flutter SharedPreferences
- Hướng dẫn và ví dụ Flutter Radio
- Hướng dẫn và ví dụ Flutter Slider
- Hướng dẫn và ví dụ Flutter SkeletonLoader
- Chỉ định cổng cố định cho Flutter Web trên Android Studio
- Hướng dẫn và ví dụ Flutter SharedPreferences
- Tạo Module trong Flutter
- Flutter upload ảnh sử dụng http và ImagePicker
- Bài thực hành Dart http CRUD
- Hướng dẫn và ví dụ Flutter image_picker
- Flutter GridView với SliverGridDelegate tuỳ biến
- Các thư viện mã nguồn mở Java
Từ khóa » đọc File Json Trong Java
-
[MLJ_13] Đọc Ghi File JSON Trong JAVA - Code Lean
-
mple - Phân Tích Cú Pháp JSON Trong Java - VietTuts
-
Cách đọc Tệp Json Vào Java Với Thư Viện JSON đơn Giản? - HelpEx
-
Đọc Ghi File Json Trong Jackson Với Java IO - Deft Blog
-
Xử Lý JSON Trong Java Với GSON Như Thế Nào? - CodeLearn
-
JSON: Tạo JSON File & đọc Nội Dung JSON File Thông Tin Cá Nhân ...
-
[Video] Gson Trong Java - Bài Tập Quản Lý Sản Phẩm + Json Trong Java
-
Read File Json In Java - Nguyễn Đăng Khiêm
-
Làm Việc Với JSON Trong Java - YouTube
-
mple – Phân Tích Cú Pháp JSON Trong Java
-
Chuyển đổi (convert) Dữ Liệu XML Sang Dữ Liệu JSON Trong Python
-
Cách Sử Dụng Gson để Serialize Data Thành Json Trong Java
-
Bài 11: Xử Lý JSON Trong Android - Programming Tutorial