概念
- String:這個很好解釋洞渔,指使用“”雙引號或’’單引號包括的字符。例如:
String comStr = "this is string; "
- Json:指的是符合json格式要求的字符串涵卵。例如:
String jsonStr = "{StudentID:'100',Name:'tmac',Hometown:'usa'}";
- JSONObject:指符合json格式要求的對象,可以看做一個Map<String,Object>侮措。例如:
JSONObject jsonObj = { StudentID: "100", Name: "tmac", Hometown: "usa" };
- JSONArray:當(dāng)做一個List<Object>规伐,可以把JSONArray看成JSONObject對象的一個集合
Json字符串
//json字符串-簡單對象型
private static final String JSON_OBJ_STR = "{\"studentName\":\"lily\",\"studentAge\":12}";
//json字符串-數(shù)組類型
private static final String JSON_ARRAY_STR = "[{\"studentName\":\"lily\",\"studentAge\":12},{\"studentName\":\"lucy\",\"studentAge\":15}]";
//復(fù)雜格式j(luò)son字符串
private static final String COMPLEX_JSON_STR = "{\"teacherName\":\"crystall\",\"teacherAge\":27,\"course\":{\"courseName\":\"english\",\"code\":1270},\"students\":[{\"studentName\":\"lily\",\"studentAge\":12},{\"studentName\":\"lucy\",\"studentAge\":15}]}";
json字符串---->JSONObject
/**
* json字符串-簡單對象型與JSONObject之間的轉(zhuǎn)換
*/
@Test
public void testJSONStrToJSONObject(){
JSONObject jsonObject = JSON.parseObject(JSON_OBJ_STR);
//JSONObject jsonObject1 = JSONObject.parseObject(JSON_OBJ_STR); //因為JSONObject繼承了JSON茵宪,所以這樣也是可以的
System.out.println(jsonObject.getString("studentName")+":"+jsonObject.getInteger("studentAge"));
String jsonStr = JSONObject.toJSONString(jsonObject);
System.out.println(jsonStr);
}
json字符串---->JSONArray
/**
* json字符串-數(shù)組類型與JSONArray之間的轉(zhuǎn)換
*/
@Test
public void testJSONStrToJSONArray(){
JSONArray jsonArray = JSON.parseArray(JSON_ARRAY_STR);
//JSONArray jsonArray1 = JSONArray.parseArray(JSON_ARRAY_STR);//因為JSONArray繼承了JSON最冰,所以這樣也是可以的
//遍歷方式1
int size = jsonArray.size();
for (int i = 0; i < size; i++){
JSONObject jsonObject = jsonArray.getJSONObject(i);
System.out.println(jsonObject.getString("studentName")+":"+jsonObject.getInteger("studentAge"));
}
//遍歷方式2
for (Object obj : jsonArray) {
JSONObject jsonObject = (JSONObject) obj;
System.out.println(jsonObject.getString("studentName")+":"+jsonObject.getInteger("studentAge"));
}
}
json字符串---->JSONObject【非重點】
/**
* 復(fù)雜json格式字符串與JSONObject之間的轉(zhuǎn)換
*/
@Test
public void testComplexJSONStrToJSONObject(){
JSONObject jsonObject = JSON.parseObject(COMPLEX_JSON_STR);
//JSONObject jsonObject1 = JSONObject.parseObject(COMPLEX_JSON_STR);//因為JSONObject繼承了JSON,所以這樣也是可以的
String teacherName = jsonObject.getString("teacherName");
Integer teacherAge = jsonObject.getInteger("teacherAge");
JSONObject course = jsonObject.getJSONObject("course");
JSONArray students = jsonObject.getJSONArray("students");
Student s = new Student();
s.setStudentName("王五");
s.setStudentAge(12);
JSONObject obj = (JSONObject) JSON.toJSON(s);
//System.out.println(obj.toJSONString());
Map smap = JSONObject.parseObject(obj.toJSONString(), Map.class);
//System.out.println(smap);
String str=JSONObject.toJSONString((Object)s);
Map smap2 = JSONObject.parseObject(str, Map.class);
//System.out.println(smap2);
Map<String,Object> map = new HashMap<String,Object>();
map.put("studentName", "張三");
map.put("studentAge", 20);
String strmap=JSONObject.toJSONString((Object)map);
Student stu = JSONObject.parseObject(strmap, Student.class);
System.out.println(stu);
}
json字符串---->Bean 【重點】
/**
* json字符串-簡單對象與JavaBean_obj之間的轉(zhuǎn)換[重點]
*/
@Test
public void testJSONStrToJavaBeanObj(){
Student student = JSON.parseObject(JSON_OBJ_STR, Student.class);
//Student student1 = JSONObject.parseObject(JSON_OBJ_STR, new TypeReference<Student>() {});//因為JSONObject繼承了JSON稀火,所以這樣也是可以的
System.out.println(student.getStudentName()+":"+student.getStudentAge());
}
json字符串---->List<Bean>【重點】
/**
* json字符串-數(shù)組類型與JavaBean_List之間的轉(zhuǎn)換
*/
@Test
public void testJSONStrToJavaBeanList(){
ArrayList<Student> students = JSON.parseObject(JSON_ARRAY_STR, new TypeReference<ArrayList<Student>>() {});
//ArrayList<Student> students1 = JSONArray.parseObject(JSON_ARRAY_STR, new TypeReference<ArrayList<Student>>() {});//因為JSONArray繼承了JSON暖哨,所以這樣也是可以的
for (Student student : students) {
System.out.println(student.getStudentName()+":"+student.getStudentAge());
}
}