• 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 }
  • 相关阅读:
    cocos2d-x把json数据解析到数组或字典中(libjson库)
    (bug更正)利用KVC和associative特性在NSObject中存储键值
    第二次博客作业
    我的感想
    期末总结
    陈老师作业
    第三次作业---四则运算的进一步完善
    好难
    对git的认识
    计应143 卞玉新
  • 原文地址:https://www.cnblogs.com/coder-wf/p/12185114.html
Copyright © 2020-2023  润新知