- VisualStudio2022
- pprof-Hướng dẫn sử dụng nó trong bản mạng trực tiếp
- Triển khai C# các loại hộp chọn nhiều màu lựa chọn thả xuống, cây lựa chọn nhiều màu lựa chọn thả xuống và các nút tối đa
- [Ghi chú học tập] Cơ sở dữ liệu cấu trúc: cat tree
Trong quá trình phát triển Java, cú pháp phân tích JSON là một nhu cầu rất phổ biến.
Cho dù tương tác với người dùng giao diện, gọi giao diện của bên thứ ba hoặc xử lý cấu hình tệp, JSON gần như không thể tránh from.
Bài viết này tổng hợp 6 cú pháp phân tích cú pháp chính JSON, hy vọng nó sẽ hữu ích cho các bạn.
(Gần đây tôi đã mở một dự án trung tâm mua sắm dựa trên SpringBoot+Vue+uniapp. Chào mừng bạn đến thăm và đóng vai chính.) [https://gitee.com/dvsusan/susan_mall].
@JsonBỏ qua
,@JsonProperty
vv, có thể kiểm soát tốt hành vi tuần tự hóa và giải tuần tự hóa.1. JSON để phản ánh (khử lưu huỳnh).
input com.fasterxml.jackson.databind.ObjectMapper; public class JacksonExample { public static void main(String[] args) Ném Exception { String json = "{\"id\":1,\"name\":\" Zhang San\"}"; ObjectMapper objectMapper = new ObjectMapper(); người dùng = objectMapper.readValue(json, User.class); System.out.println(user.getName()); // Đầu ra: Zhang San} } class User { private int id; // Getters và Setters bị bỏ qua }
2. Chuyển đổi đối tượng thành JSON (tự động hóa theo tuần).
User user user = user new(); user.setId(1); user.setName("李思"); ObjectMapper objectMapper = new ObjectMapper() ); "tên:"Lý Sĩ"}
@JsonFormat(mẫu = "yyyy-MM-dd")
@JsonBỏ qua
@JsonProperty("custom_name")
lợi thế | Missing sot |
---|---|
Chức năng toàn diện, hỗ trợ các phức tạp phức tạp | Có nhiều cấu hình hơn và chi phí học tập cao hơn một chút. |
Hiệu suất cao, cộng đồng năng động, lựa chọn hàng đầu cho các dự án cấp doanh nghiệp | Quá mạnh, một số chức năng không thể sử dụng được |
Tiện ích bổ sung phong phú để tạo điều kiện kiểm soát điều khiển tuần tự động hóa | Thư viện lớn và cồng kềnh cho các dự án nhỏ |
@Phơi ra
.1. Chuyển đổi thành đối tượng JSON.
import com.google.gson.Gson; public class GsonExample { public static void main(String[] args) { String json = "{\"id\":1,\"name\":\"王五\"} "; Gson gson = new Gson(); User user = gson.fromJson(json, User.class); System.out.println(user.getName()); // Đầu ra: Wang Wu} }
2. Chuyển đổi đối tượng thành JSON.
User user = User new(); user.setId(2); user.setName("Zhao Liu" ); // Đầu ra: {"id":2,"name://Zhao Liu" }
@Phơi ra
@Expose Riêng chuỗi tên riêng;
Gson gson = new GsonBuilder() .registerTypeAdapter(CustomClass.class, new CustomSerializer()) .create();
lợi thế | Missing sot |
---|---|
Tinh tế, đơn giản và dễ sử dụng, phù hợp với các dự án vừa và nhỏ | Thành tích hơi thua gần Jackson |
Đường cong học tập mượt mà, dễ dàng cho người mới bắt đầu | Không giàu chức năng như Jackson |
Cung cấp khả năng mở rộng tốt | Các đối tượng phức tạp sẽ rối hơn khi xử lý |
1. Chuyển đổi thành đối tượng JSON.
enter com.alibaba.fastjson.JSON; lớp công khai FastJsonExample { public static void main(String[] args) { String json = "{\"id\":1,\"name\":\"Xiao Ming\" } " ; User user = JSON.parseObject(json, User.class); System.out.println(user.getName()); // Đầu ra: Xiao Ming} }
2. Chuyển đổi đối tượng thành JSON.
Người dùng người dùng = Người dùng mới(); user.setId(3); user.setName("小红"); Chuỗi json = JSON.toJSONString(user); System.out.println(json); 3,"tên:"小红"}
JSON.DEFFAULT_DATE_FORMAT = "yyyy-MM-dd HH:mm:ss";
Bản đồ map = JSON.parseObject(json, Map.class);
lợi thế | Missing sot |
---|---|
Hiệu suất cực cao và tốc độ phân tích nhanh | Đã có những tranh cãi về vi phạm an ninh lịch sử |
Hỗ trợ phức tạp phân tích trường | Hoạt động cộng đồng sôi động hơn Jackson và Gson một chút |
Chức năng tương thích, phù hợp với quy tắc xử lý dữ liệu mô-đun lớn | Có nhiều cấu hình và API tùy chọn, phức tạp. |
enter com.jayway.jsonpath.JsonPath; lớp công khai JsonPathExample { public static void main(String[] args) { String json = """ { "store": { "book": [ {"title": "Sách 1 " , "giá": 10}, {"title": "Quyển 2", "giá": 20} ] } } """; // String title = JsonPath.read(json, "$.store.book[0].title"); System.out.println(title); // Đầu ra: Quyển 1 // Trích xuất tất cả danh sách giágiá = JsonPath.read (json, "$.store.book[*].price"); System.out.println(price); // Kết quả: [10, 20] } }
lợi thế | Missing sot |
---|---|
Khai thác hiện trường đơn giản và hiệu quả | Tuần tự hóa và giải tuần tự hóa không được hỗ trợ |
Khả năng xử lý môi trường mạnh mẽ | Phụ thuộc vào cú pháp JsonPath |
Thích hợp để trích xuất nhanh các trường lồng nhau | Không phù hợp để chuyển đổi đầy đủ JSON |
enter org.json.JSONObject; lớp công khai OrgJsonExample { public static void main(String[] args) { String json = "{\"id\":1,\"name\":\"Zhang San\"}" ; // Trích xuất trường JSONObject jsonObject = new JSONObject(json); System.out.println(jsonObject.getString("name")); // Đầu ra: Zhang San// Xây dựng JSON JSONObject newJson = new JSONObject(); ("name", "李思"); đầu ra: {"id":2,"name:"李思"} } }
lợi thế | Missing sot |
---|---|
Nhẹ nhàng, phù hợp với những vấn đề đơn giản | Các phức hợp đối tượng không được hỗ trợ |
Dễ dàng sử dụng và học tập miễn phí | Chức năng đơn giản và khả năng mở rộng gần |
nhập com.fasterxml.jackson.core.type.TypeReference; nhập com.fasterxml.jackson.databind.ObjectMapper; nhập java.util.Map; lớp công khai ManualParsing { public static void main(String[] args) xử lý ngoại lệ { Chuỗi json = "{\"id\":1,\"name\":\"Trường động\"}"; ObjectMapper(); map = objectMapper.readValue(json, TypeReference mới<>>() {}); System.out.println(map.get("name")); // Đầu ra: trường động } }
lợi thế | Missing sot |
---|---|
Tính linh hoạt cao, phù hợp với lĩnh vực năng động | Độ phức tạp của cao mã hóa và bảo trì khó khăn |
Không dựa vào thư viện của bên thứ ba | Hiệu suất và hiệu quả thấp hơn các chuyên gia JSON thư viện |
Cuối cùng, hãy để tôi so sánh ưu điểm và nhược điểm của sáu phương pháp được đề cập trong bài viết:
phương pháp | Các tình huống áp dụng | lợi thế | Missing sot |
---|---|---|---|
Jackson | Dự án cấp doanh nghiệp, kịch bản tuần tự hóa và giải tuần tự phức tạp phức tạp | Chức năng mạnh mẽ, hiệu suất tuyệt vời, hỗ trợ các cấu trúc phức hợp | Cấu hình phức tạp và đường học tập cao |
Gson | Project vừa và nhỏ, script chuyển đổi JSON đơn giản | Sử dụng hoàn hảo và dễ dàng | Chức năng giới hạn, hiệu suất hơi thấp |
FastJSON | Yêu cầu hiệu suất cao, phân tích lượng dữ liệu lớn | Hiệu suất cực cao và giàu tính năng | Đã có tranh cãi về ổ bảo mật và sự hỗ trợ của cộng đồng ít hơn Jackson một chút |
JsonPath | bản có cấu trúc được lồng vào nhau phức tạp và trích xuất trường động | Cú pháp trích xuất trường đơn giản và linh hoạt | Tuần tự hóa và giải tuần tự hóa không được hỗ trợ |
org.json | Cú pháp phân tích hoặc xây dựng bản script JSON nhanh | Nhẹ nhàng, phù hợp với những vấn đề đơn giản | Các chức năng đơn lẻ và khả năng mở rộng gần như |
Cú pháp phân tích cú pháp | Dynamic JSON hoặc các vấn đề trong đó các trường không thể sửa được | Mức độ tự động làm và hoạt động cao | Mã phức tạp và hiệu quả hơn các công cụ chuyên nghiệp |
Có hàng ngàn công cụ, nhưng cảnh quan trọng nhất .
Việc chọn đúng công cụ có thể tiết kiệm thời gian và công sức, đồng thời tránh được những cạm bẫy và có nhiều cơ hội hơn.
Nếu bài viết này hữu ích hoặc truyền cảm hứng cho bạn, hãy giúp tôi theo dõi tài khoản công khai cùng tên của tôi: Su San nói về công nghệ.
Vui lòng nhấp vào ba liên kết: thích, chuyển tiếp và xem.
Theo dõi tài khoản công khai: [Su San nói về công nghệ] và trả lời trong tài khoản công khai: Nếu bạn vào một nhà máy lớn, bạn có thể đã nhận được hướng dẫn phỏng vấn miễn phí 100.000 từ trình soạn thảo mới của tôi. Đã mời nhiều nhà máy bằng cách dựa vào hướng dẫn này.
Cuối cùng, bài viết này nói về 6 giải pháp phân tích cú pháp JSON, chúng quá hay! Bài viết này chỉ vậy thôi nếu bạn muốn biết thêm về 6 giải pháp phân tích cú pháp JSON này, nó thực sự rất tuyệt! Về nội dung, vui lòng tìm kiếm các bài viết của CFSDN hoặc tiếp tục duyệt các bài viết liên quan. Tôi hy vọng bạn sẽ ủng hộ blog của tôi trong tương lai! .
Gần đây đã bắt đầu học MongoDB. Hôm nay thầy dạy chúng em lệnh mongoexport. Trong quá trình luyện tập, tôi gặp phải một vấn đề điển hình mà chưa có học viên nào, kể cả huấn luyện viên, từng gặp phải. Tôi đang sử dụng Mongo trên máy Windows 10 của mình
Tôi chưa quen với Lược đồ JSON và đã đọc Lược đồ JSON là gì, v.v. Nhưng tôi không biết cách liên kết Lược đồ JSON với JSON để xác thực dựa trên Lược đồ JSON đó. Có ai có thể giải thích được không?
Trong xml tôi có thể đưa một tệp vào một tệp xml khác và sử dụng nó. Nếu phần mềm của bạn lấy file cấu hình từ xml nhưng không có cách nào để tách cấu hình như apache/ngnix(nginx.conf - site-av
Tôi có một đối tượng JSON chứa một chuỗi mà chính nó là một đối tượng JSON. Làm cách nào để giải tuần tự hóa nó? Tôi muốn có thể làm điều gì đó như: #[derive(Deserialize)] struct B { c: S
Hãy xem xét JSON sau đây { "a": "{\"b\": 12, \"c\": \"test\"}" } Tôi muốn xác định cách đọc chung Reads[Outer[T]] cho Serialized này Nhập JSON
đóng cửa. Câu hỏi này không đáp ứng các nguyên tắc của Stack Overflow. Hiện tại nó không chấp nhận câu trả lời. Bạn muốn cải thiện vấn đề này? Câu hỏi được cập nhật để làm cho câu hỏi trở thành chủ đề cho Stack Overflow. Đóng cửa 11 tháng trước Cải thiện
Dự án cũ của tôi có dữ liệu ở định dạng JSON tiêu chuẩn trong MySQL. Đối với dự án hoàn toàn mới của tôi trong JS (Node.js) và DynamoDB, liên quan đến định dạng JSON tiêu chuẩn: Có nên chuyển đổi nó không?
Chuỗi giá trị JSON, số, true, false, null có hợp lệ không? Nghĩa là, tài liệu JSON có hợp lệ không? Hay nó phải là một mảng/đối tượng? Một số trình xác thực chấp nhận điều này (ví dụ: http://jso
Tôi có một JSON chuỗi và một trong các trường là văn bản trường. nhập vào giao diện người dùng, nếu văn bản họ nhập là văn bản JSON, có thể giải thích một số hóa hóa, tôi cần mã hóa hóa bản văn của họ để nó không
Tôi đang xử lý dữ liệu thông qua lệnh gọi IBM MQ và khi được ColdFusion 10 (10,0,11,285437) tự động hóa hàng tuần thì 0 được trả lời về +0,0, dẫn đến JSON không hợp lệ và không thể giải quyết tự động hóa tuần tự.
Tôi đang tạo một hàm băm từ ba mảng và sau đó cố gắng tạo một json. yêu cầu 'json' A = [['A1', 'A2', 'A3'],
Tôi đã nhận được JSON từ API và phản hồi có thể là một trong 30 loại. tôi tạo cấu trúc cho từng loại phản hồi và phản hồi
Sau đó, tôi mở tệp và kiểm tra lại và nó hiển thị JSON không hợp lệ.
API nhận dạng dữ liệu được: Giải thích dữ liệu vào cấu trúc CiItems được đưa ra bên dưới { "class_name": "test", "
Tôi muốn chuyển đổi từ chuỗi thành đối tượng Từ {"key1": "{\n \"key2\": \"value2\",\n \"key3\": {\n \"key4\": \ "giá trị4\"\n }\n
Hiện tại tôi đang sử dụng đoạn mã sau để chuyển đổi json lồng nhau thành json Thành: import ("fmt" "github.com/nytlabs/gojsonexplode" ) func
Tôi có một ứng dụng sử dụng dữ liệu từ API của bên thứ ba. trúc đó phải có thẻ json với trường json "đến". quy định đặt tên khác nhau
Tôi muốn sử dụng lược đồ JSON để xác định giá trị cao nhất. trackItemGroups là nhóm tên và trackItem
Vui lòng xem xét mẫu lớp trường hợp sau, trường hợp lớp Y (a: String, b: String) trường hợp hợp số lượng dữ liệu của tôi không có từ nào
KHÔNG hoạt động tốt, nhưng nó loại bỏ tất cả các dòng mới. Tôi biết.
Tôi là một lập trình viên xuất sắc, rất xuất sắc!