java json解析(麻烦写出具体步骤)

[{
"courseID": "AAS 100",
"courseName": "Intro Asian American Studies",
"instructors": ["Ngo, F"]
}, {
"courseID": "ACCY 301",
"courseName": "Atg Measurement & Disclosure",
"instructors": ["Sougiannis, T", "Wang, Z", "Anderson, S", "Li, W"]
}]

记得下载这个包Gson
点击直接下载

import java.util.List;
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;

public class main{

    public static void main ( String[] args ){
        String jsonData = "[{" + 
        "\"courseID\": \"AAS 100\"," + 
        "\"courseName\": \"Intro Asian American Studies\"," +
        "\"instructors\": [\"Ngo, F\"]" +
        "}, {" +
        "\"courseID\": \"ACCY 301\"," +
        "\"courseName\": \"Atg Measurement & Disclosure\"," +
        "\"instructors\": [\"Sougiannis, T\", \"Wang, Z\", \"Anderson, S\", \"Li, W\"]" +
        "}]";

        Gson gson = new Gson();
        List jsonList = gson.fromJson(jsonData, new TypeToken<List>() {
        }.getType());

        System.out.print(jsonList.toString());

    }
}

百度一搜一大片

 https://www.jb51.net/article/101610.htm

两种方式解析json均需要依赖json-lib.jar开发包使用依赖包

1、JsonObject

使用JsonObject解析只有一条数据的json是非常方便的例如:"{\"name\":\"zhangsan\",\"password\":\"zhangsan123\",\"email\":\"10371443@qq.com\"}"

[java] view plain copy
public static void main(String[] args) {

     String jsonString ="{\"name\":\"zhangsan\",\"password\":\"zhangsan123\",\"email\":\"10371443@qq.com\"}";  
     JSONObject json = JSONObject.fromObject(jsonString);  
     User user = new User();  
     user.setName(json.getString("name"));  
     user.setPassword(json.getString("password"));  
     user.setEmail(json.getString("email"));  
     System.out.println(user.toString());  
}  

2、JsonArray

使用JsonArray解析数组数据的json是非常方便的例如:"[{\"name\":\"zhangsan\",\"password\":\"zhangsan123\",\"email\":\"10371443@qq.com\"},{\"name\":\"lisi\",\"password\":\"lisi123\",\"email\":\"1435123@qq.com\"}]"

[java] view plain copy
String json = "[{\"name\":\"zhangsan\",\"password\":\"zhangsan123\",\"email\":\"10371443@qq.com\"},{\"name\":\"lisi\",\"password\":\"lisi123\",\"email\":\"1435123@qq.com\"}]";

JSONArray jsonArray = JSONArray.fromObject(json);

ArrayList users = new ArrayList();

for (int i = 0; i < jsonArray.size(); i++) {

User userM = new User();

user.setName(jsonArray.getJSONObject(i).getString("name"));

user.setpassword(jsonArray.getJSONObject(i).getString("password"));

user.setEmail(jsonArray.getJSONObject(i).getString("email"));

users.add(user);

}

for (User user : users) {

System.out.println(user.toString());

}

通过以上两种方式可以解析不同格式的json数据

String msg="[{"courseID": "AAS 100","courseName": "Intro Asian American Studies","instructors": ["Ngo, F"]}, {"courseID": "ACCY 301","courseName": "Atg Measurement & Disclosure","instructors": ["Sougiannis, T", "Wang, Z", "Anderson, S", "Li, W"]}]";
JSONArray resultJsonArray = JSONArray.fromObject(msg);
    for (int i = 0; i < resultJsonArray.size(); i++) {
        JSONObject row = (JSONObject)resultJsonArray.get(i);
        String courseID = (String)row.get("courseID");
        }
 package jsyf.com.util;

import java.util.ArrayList;
import java.util.List;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.serializer.SerializerFeature;


public class FastJsonConvert {


    private static final SerializerFeature[] FEATURES_WITH_NULL_VALUE = { SerializerFeature.WriteMapNullValue, SerializerFeature.WriteNullBooleanAsFalse,
            SerializerFeature.WriteNullListAsEmpty, SerializerFeature.WriteNullNumberAsZero, SerializerFeature.WriteNullStringAsEmpty };

    /**
     * <B>方法名称:</B>将JSON字符串转换为实体对象<BR>
     * <B>概要说明:</B>将JSON字符串转换为实体对象<BR>
     * @param data JSON字符串
     * @param clzss 转换对象
     * @return T
     */
    public static <T> T convertJSONToObject(String data, Class<T> clzss) {
        try {
            T t = JSON.parseObject(data, clzss);
            return t;
        } catch (Exception e) {
            e.printStackTrace();
            return null;
        }
    }

    /**
     * <B>方法名称:</B>将JSONObject对象转换为实体对象<BR>
     * <B>概要说明:</B>将JSONObject对象转换为实体对象<BR>
     * @param data JSONObject对象
     * @param clzss 转换对象
     * @return T
     */
    public static <T> T convertJSONToObject(JSONObject data, Class<T> clzss) {
        try {
            T t = JSONObject.toJavaObject(data, clzss);
            return t;
        } catch (Exception e) {
            e.printStackTrace();
            return null;
        }
    }

    /**
     * <B>方法名称:</B>将JSON字符串数组转为List集合对象<BR>
     * <B>概要说明:</B>将JSON字符串数组转为List集合对象<BR>
     * @param data JSON字符串数组
     * @param clzss 转换对象
     * @return List<T>集合对象
     */
    public static <T> List<T> convertJSONToArray(String data, Class<T> clzss) {
        try {
            List<T> t = JSON.parseArray(data, clzss);
            return t;
        } catch (Exception e) {
            e.printStackTrace();
            return null;
        }
    }

    /**
     * <B>方法名称:</B>将List<JSONObject>转为List集合对象<BR>
     * <B>概要说明:</B>将List<JSONObject>转为List集合对象<BR>
     * @param data List<JSONObject>
     * @param clzss 转换对象
     * @return List<T>集合对象
     */
    public static <T> List<T> convertJSONToArray(List<JSONObject> data, Class<T> clzss) {
        try {
            List<T> t = new ArrayList<T>();
            for (JSONObject jsonObject : data) {
                t.add(convertJSONToObject(jsonObject, clzss));
            }
            return t;
        } catch (Exception e) {
            e.printStackTrace();
            return null;
        }
    }

    /**
     * <B>方法名称:</B>将对象转为JSON字符串<BR>
     * <B>概要说明:</B>将对象转为JSON字符串<BR>
     * @param obj 任意对象
     * @return JSON字符串
     */
    public static String convertObjectToJSON(Object obj) {
        try {
            String text = JSON.toJSONString(obj);
            return text;
        } catch (Exception e) {
            e.printStackTrace();
            return null;
        }
    }

    /**
     * <B>方法名称:</B>将对象转为JSONObject对象<BR>
     * <B>概要说明:</B>将对象转为JSONObject对象<BR>
     * @param obj 任意对象
     * @return JSONObject对象
     */
    public static JSONObject convertObjectToJSONObject(Object obj){
        try {
            JSONObject jsonObject = (JSONObject) JSONObject.toJSON(obj);
            return jsonObject;
        } catch (Exception e) {
            e.printStackTrace();
            return null;
        }       
    }


    /**
     * <B>方法名称:</B><BR>
     * <B>概要说明:</B><BR>
     * @param obj
     * @return
     */
    public static String convertObjectToJSONWithNullValue(Object obj) {
        try {
            String text = JSON.toJSONString(obj, FEATURES_WITH_NULL_VALUE);
            return text;
        } catch (Exception e) {
            e.printStackTrace();
            return null;
        }
    }

    public static void main(String[] args) {
        System.err.println(System.getProperties());
    }
}

阿里的fastJson转换,

你是要自己写解析的过程,还是要能解析出来就行?
1、使用工具解析:Gson(google)、fastJson(阿里)、jackson 等等都可以,使用简单网上教程很多。
2、自己写代码解析
/**
* 解析单个对象的JSON
* @param jsonObject json
*/
private void parseJosnObject(String jsonObject){
// 1、new数据对象
Object dataObject = new Object();
try {
// 2、解析JSON对象
JSONObject obj = new JSONObject(jsonObject);
// 3、通过KEY得到VALUE
Object value = obj.get("key");
// 4、把得到的value的值赋给对象
// 5、得到解析后的数据对象
} catch (JSONException e) {
e.printStackTrace();
}
}

/**
 * 解析数组类型的JSON
 * @param jsonArray json
 */
private void parseJsonArray(String jsonArray){
    try {
        JSONArray array = new JSONArray(jsonArray);
        for (int i = 0; i < array.length(); i++) {
             JSONObject jsonObject= (JSONObject) array.get(i);
             Object value= jsonObject.get("key");
             // 其他步骤参考parseJosnObject()
        }
    } catch (JSONException e) {
        e.printStackTrace();
    }
}

JSON解析全过程讲解:https://blog.csdn.net/miaozhenzhong/article/details/52585726 每一步都有图和解释。

JOSN解析深度一点的,手写JSON解析器:https://blog.csdn.net/yimengqiannian/article/details/53701275 可以让你对解析过程更加理解

String jsonStr = "[{name:'a',value:'aa'},{name:'b',value:'bb'},{name:'c',value:'cc'}]";
// 首次把字符串转成 JSONArray 对象
JSONArray json = JSONArray.fromObject(jsonStr);
if (json.size() > 0) {
for (int i = 0; i < json.size(); i++) {
// 遍历 jsonarray 数组,把每一个对象转成 json 对象
JSONObject job = json.getJSONObject(i);
System.out.println(job);
// 得到每个对象中的属性值
System.out.println("name:"+job.get("name")+" ,value:"+job.get("value"));
}
}

JSONObject condition = JSONObject.fromObject(传过来的名字);
Course course1 = (Course) JSONObject.toBean(condition.getJSONObject("第一个对象名course1"));
Course course2 = (Course) JSONObject.toBean(condition.getJSONObject("第二个对象名course2"));

Course course1 = (Course) JSONObject.toBean(condition.getJSONObject("第一个对象名course1"),Course.class);

需要下载的Gson包点击下载

第一步:新建个 Course类

import java.util.List;

public class Course{

    private String courseID;
    private String courseName;
    private List<String> instructors;

    public String getCourseID (){

        return courseID;
    }

    public void setCourseID ( String courseID ){

        this.courseID = courseID;
    }

    public String getCourseName (){

        return courseName;
    }

    public void setCourseName ( String courseName ){

        this.courseName = courseName;
    }

    public List<String> getInstructors (){

        return instructors;
    }

    public void setInstructors ( List<String> instructors ){

        this.instructors = instructors;
    } 
}

第二步:解析

  public static void main ( String[] args ){
        String jsonData = "[{" + 
        "\"courseID\": \"AAS 100\"," + 
        "\"courseName\": \"Intro Asian American Studies\"," +
        "\"instructors\": [\"Ngo, F\"]" +
        "}, {" +
        "\"courseID\": \"ACCY 301\"," +
        "\"courseName\": \"Atg Measurement & Disclosure\"," +
        "\"instructors\": [\"Sougiannis, T\", \"Wang, Z\", \"Anderson, S\", \"Li, W\"]" +
        "}]";

        Gson gson = new Gson();
        List<Course> courseList = gson.fromJson(jsonData, new TypeToken<List<Course>>() {  
        }.getType());
        System.out.print(courseList.size());

        for (Course course : courseList) 

            System.out.println("courseID:"+course.getCourseID()+"\tcourseName:" + course.getCourseName() + "\tinstructors:" + course.getInstructors());
        }

jackson包

 import java.util.List;

import org.codehaus.jackson.map.ObjectMapper;
import org.codehaus.jackson.type.TypeReference;

public class JsonParseTest {
    public static void main(String[] args) {
        try {
            ObjectMapper mapper = new ObjectMapper();
            String jsonStr="{"
                    + "\"courseID\": \"AAS 100\","
                    + "\"courseName\": \"Intro Asian American Studies\","
                    + "\"instructors\": [\"Ngo, F\"]"
                    + "}";
            Course course = mapper.readValue(jsonStr, Course.class);
            System.out.println("单个对象:"+course.toString());
            jsonStr="[{"
                    + "\"courseID\": \"AAS 100\","
                    + "\"courseName\": \"Intro Asian American Studies\","
                    + "\"instructors\": [\"Ngo, F\"]"
                    + "}, {"
                    + "\"courseID\": \"ACCY 301\","
                    + "\"courseName\": \"Atg Measurement & Disclosure\","
                    + "\"instructors\": [\"Sougiannis, T\", \"Wang, Z\", \"Anderson, S\", \"Li, W\"]"
                    + "}]";
            List<Course> lists = mapper.readValue(jsonStr, new TypeReference<List<Course>>() {});
            for(Course c:lists){
                System.out.println("多个对象:"+c.toString());
            }
        } catch (Exception e) {
            System.out.println("json 解析出错:"+e.getMessage());
        }
    }


}
class Course{
    private String courseID;
    private String courseName;
    private List<String> instructors;
    public String getCourseID() {
        return courseID;
    }
    public void setCourseID(String courseID) {
        this.courseID = courseID;
    }
    public String getCourseName() {
        return courseName;
    }
    public void setCourseName(String courseName) {
        this.courseName = courseName;
    }
    public List<String> getInstructors() {
        return instructors;
    }
    public void setInstructors(List<String> instructors) {
        this.instructors = instructors;
    }
    @Override
    public String toString() {
        return "Course [courseID=" + courseID + ", courseName=" + courseName + ", instructors=" + instructors + "]";
    }
}

运行结果:
单个对象:Course [courseID=AAS 100, courseName=Intro Asian American Studies, instructors=[Ngo, F]]
多个对象:Course [courseID=AAS 100, courseName=Intro Asian American Studies, instructors=[Ngo, F]]
多个对象:Course [courseID=ACCY 301, courseName=Atg Measurement & Disclosure, instructors=[Sougiannis, T, Wang, Z, Anderson, S, Li, W]]