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"]
}]

12个回答

记得下载这个包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);

共12条数据 1 尾页
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问