Java解析Json字符串--數組或列表


Json示例:

 1 [
 2 {
 3 "age": 25,
 4 "gender": "female",
 5 "grades": "三班",
 6 "name": "露西",
 7 "weight": 51.3
 8 },
 9 {
10 "age": 26,
11 "gender": "male",
12 "grades": "三班",
13 "name": "傑克",
14 "weight": 66.5
15 },
16 {
17 "age": 25,
18 "gender": "female",
19 "grades": "三班",
20 "name": "莉莉",
21 "weight": 55
22 }
23 ]

 

我們來解析一下這個Json字符串。

首先,因為此Json字符串最外邊是由一個中括弧”[]”包裹,那么,最終我們會用數組或者列表來接收它。

接下來,我們能看到中括弧里邊有三個同級的大括弧,並且每個大括弧里包含的內容是相同的,大括弧我們可以對應創建一個類,我們創建一個類Student.java,並對應大括弧內的元素,定義相應的成員變量,生成get/set方法。

我們生成的Student.java如下:

 1 package com.bean;
 2 
 3 /**
 4 * 學生
 5 */
 6 public class Student {
 7 
 8 private int age;//年齡
 9 private String gender;//性別,male/female
10 private String grades;//班級
11 private String name;//姓名
12 private float weight;//體重
13 
14 public int getAge() {
15 return age;
16 }
17 public void setAge(int age) {
18 this.age = age;
19 }
20 public String getGender() {
21 return gender;
22 }
23 public void setGender(String gender) {
24 this.gender = gender;
25 }
26 public String getGrades() {
27 return grades;
28 }
29 public void setGrades(String grades) {
30 this.grades = grades;
31 }
32 public String getName() {
33 return name;
34 }
35 public void setName(String name) {
36 this.name = name;
37 }
38 public float getWeight() {
39 return weight;
40 }
41 public void setWeight(float weight) {
42 this.weight = weight;
43 }
44 
45 }

 

解析成數組或列表:

 1 package com.test;
 2 
 3 import java.util.ArrayList;
 4 import java.util.List;
 5 
 6 import net.sf.json.JSONArray;
 7 
 8 import com.bean.Student;
 9 
10 public class Domain {
11 
12 @SuppressWarnings("unchecked")
13 public static void main(String[] args) {
14 
15 String jsonStr = "[{\"age\": 25,\"gender\": \"female\",\"grades\": \"三班\",\"name\": \"露西\",\"weight\": 51.3},{\"age\": 26,\"gender\": \"male\",\"grades\": \"三班\",\"name\": \"傑克\",\"weight\": 66.5},{\"age\": 25,\"gender\": \"female\",\"grades\": \"三班\",\"name\": \"莉莉\",\"weight\": 55}]";
16 
17 JSONArray jsonArray = JSONArray.fromObject(jsonStr);
18 
19 Student[] stus = new Student[3];
20 List<Student> list = new ArrayList<Student>();
21 
22 stus = (Student[]) JSONArray.toArray(jsonArray, Student.class);//轉換成數組
23 list = (List<Student>) JSONArray.toCollection(jsonArray, Student.class);//轉換成列表
24 
25 }
26 }

 

通過數組或者列表生成Json字符串:

 1 package com.test;
 2 
 3 import java.util.ArrayList;
 4 import java.util.List;
 5 
 6 import net.sf.json.JSONArray;
 7 
 8 import com.bean.Student;
 9 
10 public class Domain {
11 
12 @SuppressWarnings("unchecked")
13 public static void main(String[] args) {
14 
15 Student stu1 = new Student();
16 Student stu2 = new Student();
17 Student stu3 = new Student();
18 
19 stu1.setAge(25);
20 stu1.setGender("female");
21 stu1.setGrades("三班");
22 stu1.setName("露西");
23 stu1.setWeight(51.3f);
24 
25 stu2.setAge(26);
26 stu2.setGender("male");
27 stu2.setGrades("三班");
28 stu2.setName("傑克");
29 stu2.setWeight(66.5f);
30 
31 stu3.setAge(25);
32 stu3.setGender("female");
33 stu3.setGrades("三班");
34 stu3.setName("莉莉");
35 stu3.setWeight(55.0f);
36 
37 Student[] stus = new Student[3];
38 List<Student> list = new ArrayList<Student>();
39 
40 stus[0] = stu1;
41 stus[1] = stu2;
42 stus[2] = stu3;
43 
44 list.add(stu1);
45 list.add(stu2);
46 list.add(stu3);
47 
48 String jsonStr1 = JSONArray.fromObject(stus).toString();
49 String jsonStr2 = JSONArray.fromObject(list).toString();
50 
51 System.out.println(jsonStr1);
52 System.out.println(jsonStr2);
53 
54 
55 }
56 }


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM