JSON là định dạng trao đổi dữ liệu độc lập về ngôn ngữ và trọng lượng nhẹ được sử dụng cho hầu hết các giao tiếp giữa máy khách và máy chủ
JSONObject và JSONArray là hai lớp phổ biến thường có trong hầu hết các thư viện xử lý JSON. JSONObject lưu trữ các cặp khóa-giá trị không có thứ tự, giống như triển khai Bản đồ Java. Mặt khác, JSONArray là một chuỗi các giá trị được sắp xếp theo thứ tự giống như Danh sách hoặc Vectơ trong Java
Trong hướng dẫn này, chúng ta sẽ sử dụng JSON-Java [org. json] và tìm hiểu cách xử lý JSONArray để trích xuất giá trị cho một khóa nhất định. Nếu cần, chúng tôi có sẵn phần giới thiệu về thư viện này
2. Phụ thuộc Maven
Trước tiên, chúng tôi sẽ bắt đầu bằng cách thêm phần phụ thuộc bên dưới vào POM của chúng tôi
org.json
json
20180813
Chúng tôi luôn có thể tìm hiểu phiên bản JSON-Java mới nhất trên
3. Xây dựng bối cảnh
Một thông báo JSON thường bao gồm các đối tượng và mảng JSON có thể được lồng vào nhau. Đối tượng JSONArray được đặt trong dấu ngoặc vuông [ ] trong khi đối tượng JSONObject được đặt trong dấu ngoặc nhọn {}. Chẳng hạn, hãy xem xét thông báo JSON này
[
{
"name": "John",
"city": "chicago",
"age": "22"
},
{
"name": "Gary",
"city": "florida",
"age": "35"
},
{
"name": "Selena",
"city": "vegas",
"age": "18"
}
]
Rõ ràng, đó là một mảng các đối tượng JSON. Mỗi đối tượng JSON trong mảng này đại diện cho bản ghi khách hàng của chúng tôi có tên, tuổi và thành phố làm thuộc tính hoặc khóa của nó
4. Xử lý mảng JSON
Với JSON ở trên, điều gì sẽ xảy ra nếu chúng tôi muốn tìm ra tên của tất cả khách hàng của mình?
Như chúng ta đã biết, JSONArray là một danh sách các đối tượng JSON. Vì vậy, hãy tìm tất cả các giá trị cho một khóa nhất định
public List getValuesForGivenKey[String jsonArrayStr, String key] {
JSONArray jsonArray = new JSONArray[jsonArrayStr];
return IntStream.range[0, jsonArray.length[]]
.mapToObj[index -> [[JSONObject]jsonArray.get[index]].optString[key]]
.collect[Collectors.toList[]];
}
Trong ví dụ trước
- Đầu tiên, chúng tôi lặp qua toàn bộ danh sách các đối tượng trong một mảng JSON
- Sau đó, đối với mỗi JSONObject, chúng tôi nhận được giá trị được ánh xạ tới khóa đã cho
Ngoài ra, phương thức optString[] trả về một chuỗi rỗng nếu không tồn tại khóa như vậy
Khi gọi getValuesForGivenKey[jsonArrayStr, “name”] trong đó jsonArrayStr là JSON mẫu của chúng tôi, chúng tôi sẽ nhận được một Danh sách tất cả các tên làm đầu ra
[John, Gary, Selena]
5. Phần kết luận
Trong bài viết nhanh này, chúng ta đã học cách phân tích cú pháp JSONArray để nhận tất cả các giá trị được ánh xạ cho một khóa nhất định. Ở đây, chúng tôi đã sử dụng JSON-Java [org. thư viện json]
JSON. đơn giản là một giải pháp thay thế tương tự và mạnh mẽ khác để làm việc với JSON trong Java. Mời các bạn khám phá
Một đối tượng JSON chứa 0, một hoặc nhiều cặp khóa-giá trị, còn được gọi là thuộc tính. Đối tượng được bao quanh bởi dấu ngoặc nhọn {}. Mỗi cặp khóa-giá trị được phân tách bằng dấu phẩy. Thứ tự của cặp khóa-giá trị không liên quan
Một cặp khóa-giá trị bao gồm một khóa và một giá trị, được phân tách bằng dấu hai chấm [. ]. Khóa là một chuỗi, xác định cặp khóa-giá trị. Giá trị có thể là bất kỳ loại dữ liệu nào sau đây
chuỗi được bao quanh bởi dấu ngoặc kép [" "]numberfloatarrayJSON arrayobjectJSON object [có thể lồng nhau]booleantrue hoặc falseemptynull
Chào Kumar,
Nếu đó là JSON, thì không cần phân tích cú pháp
Ví dụ
var json = {"allFailedServersSysId":["b7fd94681bfa9010c63e55392a4bcbb8"],"appCount":"One App","appRTM":["91579bd61021a800df0bd7621fe7e6aa"],"appServSysId":["1b154ff71b8a58902ac554e56e4bcb6b","53154ff71b8a58902ac554e56e4bcb59"],"appSupportGroup":["fa7f9bd310ada800df0bd7621fe7e6fa"],"server":"vdwvmwsdb69","serverSysId":"b7fd94681bfa9010c63e55392a4bcbb8"};
gs.print[json.allFailedServersSysId];
Sẽ cho kết quả
*** Script: b7fd94681bfa9010c63e55392a4bcbb8
Tuy nhiên, nếu nó thực sự là một chuỗi. Ví dụ: [lưu ý "'" xung quanh json]
var json = '{"allFailedServersSysId":["b7fd94681bfa9010c63e55392a4bcbb8"],"appCount":"One App","appRTM":["91579bd61021a800df0bd7621fe7e6aa"],"appServSysId":["1b154ff71b8a58902ac554e56e4bcb6b","53154ff71b8a58902ac554e56e4bcb59"],"appSupportGroup":["fa7f9bd310ada800df0bd7621fe7e6fa"],"server":"vdwvmwsdb69","serverSysId":"b7fd94681bfa9010c63e55392a4bcbb8"}';
var jsonObj = JSON.parse[json];
gs.print[jsonObj .allFailedServersSysId];
cần phải phân tích cú pháp. Sử dụng JSON. phân tích cú pháp
Kịch bản trên sẽ dẫn đến bên dưới
*** Script: b7fd94681bfa9010c63e55392a4bcbb8