import java.util.List;
import org.json.JSONObject;
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
import com.yz.javabean.Menu;
import com.yz.javabean.Student;
import com.yz.utils.HttpUtils;
public class Demo10_ParseGson {
public static void main(String[] args) throws Exception {
String baseUrl1 = "http://10.0.158.239:8080/Day22_Server/JsonServlet?action=student";
String baseUrl2 = "http://10.0.158.239:8080/Day22_Server/JsonServlet?action=students";
String json1 = HttpUtils.getJsonFromNetWork(baseUrl1);// {}
String json2 = HttpUtils.getJsonFromNetWork(baseUrl2);// []
System.out.println(json1);
// 谷歌:
// step1:创建对象
Gson gson = new Gson();
// step2:解析
/**
* 解析单个对象:{}
*
* 第一个参数:String json:要解析的json字符串
*
* 第二个参数:Class cls,用于描述将该json字符串,解析为哪种javabean对象。
*/
Student stu = gson.fromJson(json1, Student.class);
System.out.println(stu);
System.out.println("-----------------------------");
// Type type = new TypeToken<List<Student>>() {
// }.getType();
/**
* 一组对象:[]
*
* 第一个参数:String json:要解析的json字符串
*
* 第二个参数:Type type:表名解析后的得到的List集合中存储的泛型的类型。new
* TypeToken<>(){}.getType()
*/
List<Student> list = gson.fromJson(json2, new TypeToken<List<Student>>() {
}.getType());// List<?>
for (int i = 0; i < list.size(); i++) {
System.out.println("--->" + list.get(i));
}
System.out.println("--------------");
String json3 = HttpUtils
.getJsonFromNetWork("http://www.qubaobei.com/ios/cf/dish_list.php?stage_id=1&page=1&limit=20");
parseGson(json3);
}
public static List<Menu> parseGson(String json) throws Exception {
// 使用原生的解析方式获取到data对应[]--->
// JSONObject jsonObject = new JSONObject(json);
// JSONArray jsonArray = jsonObject.getJSONArray("data");
// String subJson = jsonArray.toString();
// System.out.println(subJson);
// List<Menu> list = gson.fromJson(subJson, new TypeToken<List<Menu>>()
// {
// }.getType());
Gson gson = new Gson();
List<Menu> list = gson.fromJson(new JSONObject(json).getJSONArray("data").toString(),
new TypeToken<List<Menu>>() {
}.getType());
return list;
}
import org.json.JSONObject;
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
import com.yz.javabean.Menu;
import com.yz.javabean.Student;
import com.yz.utils.HttpUtils;
public class Demo10_ParseGson {
public static void main(String[] args) throws Exception {
String baseUrl1 = "http://10.0.158.239:8080/Day22_Server/JsonServlet?action=student";
String baseUrl2 = "http://10.0.158.239:8080/Day22_Server/JsonServlet?action=students";
String json1 = HttpUtils.getJsonFromNetWork(baseUrl1);// {}
String json2 = HttpUtils.getJsonFromNetWork(baseUrl2);// []
System.out.println(json1);
// 谷歌:
// step1:创建对象
Gson gson = new Gson();
// step2:解析
/**
* 解析单个对象:{}
*
* 第一个参数:String json:要解析的json字符串
*
* 第二个参数:Class cls,用于描述将该json字符串,解析为哪种javabean对象。
*/
Student stu = gson.fromJson(json1, Student.class);
System.out.println(stu);
System.out.println("-----------------------------");
// Type type = new TypeToken<List<Student>>() {
// }.getType();
/**
* 一组对象:[]
*
* 第一个参数:String json:要解析的json字符串
*
* 第二个参数:Type type:表名解析后的得到的List集合中存储的泛型的类型。new
* TypeToken<>(){}.getType()
*/
List<Student> list = gson.fromJson(json2, new TypeToken<List<Student>>() {
}.getType());// List<?>
for (int i = 0; i < list.size(); i++) {
System.out.println("--->" + list.get(i));
}
System.out.println("--------------");
String json3 = HttpUtils
.getJsonFromNetWork("http://www.qubaobei.com/ios/cf/dish_list.php?stage_id=1&page=1&limit=20");
parseGson(json3);
}
public static List<Menu> parseGson(String json) throws Exception {
// 使用原生的解析方式获取到data对应[]--->
// JSONObject jsonObject = new JSONObject(json);
// JSONArray jsonArray = jsonObject.getJSONArray("data");
// String subJson = jsonArray.toString();
// System.out.println(subJson);
// List<Menu> list = gson.fromJson(subJson, new TypeToken<List<Menu>>()
// {
// }.getType());
Gson gson = new Gson();
List<Menu> list = gson.fromJson(new JSONObject(json).getJSONArray("data").toString(),
new TypeToken<List<Menu>>() {
}.getType());
return list;
}
}
GitHub: https://github.com/HuaDanJson