[{
"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());
}
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]]