sách gpt4 ăn đã đi

Hướng dẫn phát triển JSON đơn giản

In lại Tác giả: qq735679552 Thời gian cập nhật: 29-09-2022 22:32:09 25 4
mua khóa gpt4 giày nike

CFSDN nhấn mạnh vào giá trị tạo ra nguồn mở và chúng tôi cam kết xây dựng nền tảng chia sẻ tài nguyên để mọi nhân viên CNTT có thể tìm thấy thế giới tuyệt vời của bạn tại đây.

Bài viết trên blog CFSDN Hướng dẫn phát triển JSON đơn giản này được tác giả sưu tầm và biên soạn. Nếu bạn quan tâm đến bài viết này thì nhớ like nhé.

JSON đơn giản là một khung phân tích cú pháp Java JSON được phát triển bởi Google, dựa trên giao thức Apache.

Tệp đã tải xuống là: json_simple.jar.

Ví dụ 1: Cách rất thuận tiện, sử dụng JSONValue.

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
Hệ thống.out.println( "=======giải mã=======" );
   
    Chuỗi s= "[0,{\"1\":{\"2\":{\"3\":{\"4\":[5,{\"6\":7}]}}}}] " ;
    Đối tượng obj=JSONValue.parse(s);
    Mảng JSONArray=(JSONArray)obj;
    Hệ thống.out.println( "======phần tử thứ 2 của mảng======" );
    System.out.println(mảng.get( 1 ));
    System.out.println();
       
    JSONObject obj2=(JSONObject)mảng.get( 1 );
    Hệ thống.out.println( "======trường \"1\"==========" );
    Hệ thống.out.println(obj2.get( "1" )); 
 
       
    s= "{}" ;
    obj=JSONValue.parse(các);
    System.out.println(obj);
       
    s= "[5,]" ;
    obj=JSONValue.parse(các);
    System.out.println(obj);
       
    s= "[5,,2]" ;
    obj=JSONValue.parse(các);
    System.out.println(obj);

JSONObject kế thừa Map và JSONArray kế thừa List, vì vậy bạn có thể sử dụng JSONObject và JSONArray theo cách tiêu chuẩn của Map và List.

JSONValue có thể sử dụng mảng hoặc đối tượng.

Ví dụ 2: Cách nhanh chóng, sử dụng JSONParser.

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
Trình phân tích cú pháp JSONParser= mới Trình phân tích JSON();
 
  Hệ thống.out.println( "=======giải mã=======" );
     
  Chuỗi s= "[0,{\"1\":{\"2\":{\"3\":{\"4\":[5,{\"6\":7}]}}}}] " ;
  Đối tượng obj=parser.parse(s);
  Mảng JSONArray=(JSONArray)obj;
  Hệ thống.out.println( "======phần tử thứ 2 của mảng======" );
  System.out.println(mảng.get( 1 ));
  System.out.println();
     
  JSONObject obj2=(JSONObject)mảng.get( 1 );
  Hệ thống.out.println( "======trường \"1\"==========" );
  Hệ thống.out.println(obj2.get( "1" )); 
 
     
  s= "{}" ;
  obj=bộ phân tích cú pháp.parse(s);
  System.out.println(obj);
     
  s= "[5,]" ;
  obj=bộ phân tích cú pháp.parse(s);
  System.out.println(obj);
     
  s= "[5,,2]" ;
  obj=bộ phân tích cú pháp.parse(s);
  System.out.println(obj);

 Sử dụng JSONParser yêu cầu bắt ngoại lệ.

Ví dụ 3: Xử lý ngoại lệ.

?
1
2
3
4
5
6
7
8
9
10
Chuỗi jsonText = "[[null, 123.45, \"a\\tb c\"]}, đúng" ;
  Trình phân tích cú pháp JSONParser = mới Trình phân tích JSON();
     
  thử {
  bộ phân tích cú pháp.parse(jsonText);
  }
  nắm lấy (ParseException pe){
  Hệ thống.out.println( "chức vụ: " + pe.getPosition());
  Hệ thống.out.println(pe);
  }

Kết quả thực hiện:

?
1
chức vụ: 25 Mã thông báo không mong muốn RIGHT BRACE(}) ở vị trí 25 .

  。

Ví dụ 4: Nhà máy container.

Sử dụng lớp ContainerFactory để tạo nhà máy sản xuất container.

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
Chuỗi jsonText = "{\"đầu tiên\": 123, \"thứ hai\": [4, 5, 6], \"thứ ba\": 789}" ;
  Trình phân tích cú pháp JSONParser = mới Trình phân tích JSON();
  ContainerFactory containerFactory = mới Nhà máy Container()
  công cộng Danh sách creatArrayContainer() {
   trở lại mới Danh sách liên kết();
  }
 
  công cộng Bản đồ createObjectContainer() {
   trở lại mới Bản đồ LinkedHash();
  }
       
  };
     
  thử {
  Bản đồ json = (Map)parser.parse(jsonText, containerFactory);
  Trình lặp iter = json.entrySet().iterator();
  Hệ thống.out.println( "==lặp lại kết quả==" );
  trong khi (iter.hasNext()){
   Bản đồ.Mục nhập = (Map.Entry)iter.next();
   System.out.println(entry.getKey() + "=>" + mục nhập. getValue());
  }
       
  Hệ thống.out.println( "==đếnJSONString()==" );
  System.out.println(JSONValue.toJSONString(json));
  }
  nắm lấy (ParseException pe){
  Hệ thống.out.println(pe);
  }

 Kết quả là như sau:

?
1
2
==lặp lại kết quả== đầu tiên=> 123 thứ hai=>[ 4 , 5 , 6 ] thứ ba=> 789 ==toJSONString()==
  { "Đầu tiên" : 123 , "thứ hai" :[ 4 , 5 , 6 ], "thứ ba" : 789 }
 Nếu bạn không sử dụng nhà máy sản xuất vùng chứa, Simple-JSON sẽ sử dụng JSONObject và JSONArray theo mặc định.
 Ví dụ 5: Xử lý nội dung kiểu SAX có thể dừng
SimpleJSON đề xuất một phương pháp xử lý nội dung kiểu SAX có thể dừng đơn giản để xử lý luồng văn bản. Người dùng có thể ở bất kỳ điểm nào trong luồng đầu vào logic, sau đó xử lý logic khác và sau đó tiếp tục quá trình xử lý trước đó. Không cần phải đợi toàn bộ luồng được xử lý. Dưới đây là một ví dụ.
KeyFinder.java:
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
lớp học Trình tìm khóa thực hiện Trình xử lý nội dung{
  riêng tư Giá trị đối tượng;
  riêng tư Boolean tìm thấy = SAI ;
  riêng tư Boolean kết thúc = SAI ;
  riêng tư Khóa dây;
  riêng tư Chuỗi matchKey;
   
  công cộng vô hiệu setMatchKey(Chuỗi matchKey){
  cái này .matchKey = matchKey;
  }
   
  công cộng Đối tượng getValue(){
  trở lại giá trị;
  }
   
  công cộng Boolean isEnd(){
  trở lại kết thúc;
  }
   
  công cộng vô hiệu đặtTìm thấy( Boolean thành lập){
  cái này .found = tìm thấy;
  }
   
  công cộng Boolean được tìm thấy(){
  trở lại thành lập;
  }
   
  công cộng vô hiệu bắt đầuJSON() ném Ngoại lệ phân tích cú pháp, IOException {
  tìm thấy = SAI ;
  kết thúc = SAI ;
  }
 
  công cộng vô hiệu kết thúcJSON() ném Ngoại lệ phân tích cú pháp, IOException {
  kết thúc = ĐÚNG VẬY ;
  }
 
  công cộng Boolean primitive(Giá trị đối tượng) ném Ngoại lệ phân tích cú pháp, IOException {
  nếu như (phím != vô giá trị ){
   nếu như (key.equals(matchKey)){
   tìm thấy = ĐÚNG VẬY ;
   cái này .giá trị = giá trị;
   chìa khóa = vô giá trị ;
   trở lại SAI ;
   }
  }
  trở lại ĐÚNG VẬY ;
  }
 
  công cộng Boolean bắt đầuArray() ném Ngoại lệ phân tích cú pháp, IOException {
  trở lại ĐÚNG VẬY ;
  }
 
   
  công cộng Boolean bắt đầuObject() ném Ngoại lệ phân tích cú pháp, IOException {
  trở lại ĐÚNG VẬY ;
  }
 
  công cộng Boolean startObjectEntry(Chuỗi khóa) ném Ngoại lệ phân tích cú pháp, IOException {
  cái này .key = chìa khóa;
  trở lại ĐÚNG VẬY ;
  }
   
  công cộng Boolean kết thúcMảng() ném Ngoại lệ phân tích cú pháp, IOException {
  trở lại SAI ;
  }
 
  công cộng Boolean kết thúcĐối tượng() ném Ngoại lệ phân tích cú pháp, IOException {
  trở lại ĐÚNG VẬY ;
  }
 
  công cộng Boolean kết thúcObjectEntry() ném Ngoại lệ phân tích cú pháp, IOException {
  trở lại ĐÚNG VẬY ;
  }
}
Logic chính:
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Chuỗi jsonText = "{\"đầu tiên\": 123, \"thứ hai\": [{\"k1\":{\"id\":\"id1\"}}, 4, 5, 6, {\"id\": 123}], \"thứ ba\": 789, \"id\": null}" ;
  Bộ phân tích cú pháp JSONParser =newJSONParser();
  Công cụ tìm KeyFinder = newKeyFinder();
  công cụ tìm.setMatchKey( "nhận dạng" );
  thử {
  trong khi (!finder.isEnd()){
   parser.parse(jsonText, trình tìm kiếm, ĐÚNG VẬY );
   nếu như (finder.isFound()){
   công cụ tìm.setFound( SAI );
   Hệ thống.out.println( "đã tìm thấy id:" );
   System.out.println(finder.getValue());
   }
  }  
  }
  nắm lấy (ParseException pe){
  pe. printStackTrace();
  }
Kết quả thực hiện:
?
1
2
3
4
5
6
tìm thấy id:
  id1
  tìm thấy id:
  123
  tìm thấy id:
  vô giá trị
Ví dụ 6: Toàn bộ biểu đồ đối tượng, được phân tích cú pháp bằng kiểu SAX
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
lớp học Máy biến áp thực hiện Trình xử lý nội dung{
   riêng tư Giá trị ngăn xếpStack;
   
   công cộng Đối tượng getResult(){
    nếu như (giá trịStack == vô giá trị || giá trịStack.kích thước() == 0 )
     trở lại vô giá trị ;
    trở lại valueStack.peek();
   }
   
   công cộng Boolean kết thúcMảng() ném Ngoại lệ phân tích cú pháp, IOException {
    trackBack ( ) ;
    trở lại ĐÚNG VẬY ;
   }
 
   công cộng vô hiệu kết thúcJSON () ném Ngoại lệ phân tích cú pháp, IOException {}
 
   công cộng Boolean kết thúcĐối tượng () ném Ngoại lệ phân tích cú pháp, IOException {
    trackBack ( ) ;
    trở lại ĐÚNG VẬY ;
   }
 
   công cộng Boolean kết thúcObjectEntry() ném Ngoại lệ phân tích cú pháp, IOException {
    Giá trị đối tượng = valueStack.pop();
    Khóa đối tượng = valueStack.pop();
    Bản đồ cha = (Map)valueStack.peek();
    parent.put(khóa, giá trị);
    trở lại ĐÚNG VẬY ;
   }
 
   riêng tư vô hiệu trackBack(){
    nếu như (valueStack. kích thước() > 1 ){
     Giá trị đối tượng = valueStack.pop();
     Đối tượng prev = valueStack.peek();
     nếu như (trước đó trường hợp của Sợi dây){
      valueStack.push(giá trị);
     }
    }
   }
   
   riêng tư vô hiệu consumerValue(Giá trị đối tượng){
    nếu như (valueStack. kích thước() == 0 )
     valueStack.push(giá trị);
    khác {
     Đối tượng prev = valueStack.peek();
     nếu như (trước đó trường hợp của Danh sách){
      Mảng danh sách = (Danh sách)trước;
      mảng.thêm(giá trị);
     }
     khác {
      valueStack.push(giá trị);
     }
    }
   }
   
   công cộng Boolean nguyên thủy (Giá trị đối tượng) ném Ngoại lệ phân tích cú pháp, IOException {
    consumerValue(giá trị);
    trở lại ĐÚNG VẬY ;
   }
 
   công cộng Boolean bắt đầuArray() ném Ngoại lệ phân tích cú pháp, IOException {
    Mảng danh sách = mới JSONMảng();
    consumerValue(mảng);
    valueStack.push(mảng);
    trở lại ĐÚNG VẬY ;
   }
 
   công cộng vô hiệu bắt đầuJSON() ném Ngoại lệ phân tích cú pháp, IOException {
    giá trịStack = mới Ngăn xếp();
   }
 
   công cộng Boolean startObject () ném Ngoại lệ phân tích cú pháp, IOException {
    Đối tượng bản đồ = mới Đối tượng JSON();
    consumerValue(đối tượng);
    valueStack.push(đối tượng);
    trở lại ĐÚNG VẬY ;
   }
 
   công cộng Boolean startObjectEntry (Khóa chuỗi) ném Ngoại lệ phân tích cú pháp, IOException {
    valueStack.push(khóa);
    trở lại ĐÚNG VẬY ;
   }
   
  }

Logic chế độ chính:

?
1
2
3
4
5
6
7
String jsonString = ;
  Giá trị đối tượng = vô giá trị ;
  Trình phân tích cú pháp JSONParser = mới Trình phân tích JSON();
  Máy biến áp biến áp = mới Máy biến áp();
   
  parser.parse(jsonString, biến áp);
  giá trị = transformer.getResult();
 Kết quả thực hiện:
?
1
2
3
4
String jsonString =;
  Giá trị đối tượng = vô giá trị ;
  Bộ phân tích cú pháp JSONParser =newJSONParser();
  giá trị = parser.parse(jsonString);
Để ý:
JSONPauser không an toàn cho luồng. 

json_encode - Biến mã hóa JSON.

Mô tả: chuỗi json_encode ($value), trả về dạng giá trị JSON.

Tham số: Giá trị được mã hóa, có thể là bất kỳ loại dữ liệu nào ngoại trừ loại tài nguyên.

Chức năng này chỉ có thể chấp nhận dữ liệu được mã hóa UTF-8 (Chú thích: đề cập đến dữ liệu loại ký tự/chuỗi).

Giá trị trả về: Nếu mã hóa thành công, một chuỗi được biểu thị dưới dạng JSON sẽ được trả về.

Cuối cùng, bài viết về Hướng dẫn phát triển JSON đơn giản này kết thúc tại đây. Nếu bạn muốn biết thêm về Hướng dẫn phát triển JSON đơn giản, vui lòng tìm kiếm các bài viết về 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! .

25 4 0
qq735679552
Hồ sơ

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá taxi Didi miễn phí
Phiếu giảm giá taxi Didi
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress