下面是一个Json字符串:
String jsonStr = "[{"id":"1","name":"数据结构","version":"2.1"},{"id":"2","name":"软件工程","version":"3.1"},{"id":"3","name":"操作系统构","version":"4.1"}]";
我们要使用JsonObject和GSON的式把这段简单的字符解析。
JsonObject
public void parserJsonWithJsonObject(){
String jsonStr = "[{\"id\":\"1\",\"name\":\"数据结构\",\"version\":\"2.1\"},{\"id\":\"2\",\"name\":\"软件工程\",\"version\":\"2.1\"},{\"id\":\"3\",\"name\":\"操作系统\",\"version\":\"2.1\"}]";
try {
JSONArray jsonArray = new JSONArray(jsonStr);
for (int i = 0; i < jsonArray.length();i++){
JSONObject object = jsonArray.getJSONObject(i);
String name = object.getString("name");
String id = object.getString("id");
String version = object.getString("version");
Toast.makeText(MainActivity.this,"name="+name+" id="+id+" version"+version,Toast.LENGTH_LONG).show();
}
}catch (Exception e){
e.printStackTrace();
}
}
GSON
在这里需要结合面向对象的思想。首先分析Json字符串可以转化成的模型类,新建一个类可以用来填充字符串中的数据。我们新建一个类User,并实现其setter和getter方法。
public class User{
private String id;
private String name;
private String version;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public void setName(String name) {
this.name = name;
}
public void setVersion(String version) {
this.version = version;
}
public String getName() {
return name;
}
public String getVersion() {
return version;
}
}
解析的实现
public void parserJsonWithGSON(){
String jsonStr = "[{\"id\":\"1\",\"name\":\"数据结构\",\"version\":\"2.1\"},{\"id\":\"2\",\"name\":\"软件工程\",\"version\":\"2.1\"},{\"id\":\"3\",\"name\":\"操作系统\",\"version\":\"2.1\"}]";
Gson gson = new Gson();
List<User> userList = gson.fromJson(jsonStr,new TypeToken<List<User>>(){}.getType());
for (User user : userList){
Toast.makeText(MainActivity.this,"name="+user.getName()+" id="+user.getId()+" version="+user.getVersion(),Toast.LENGTH_LONG).show();
}
}
在工程中如果要使用GSON,需要在app/build.gradle中增加:
compile 'com.google.code.gson:gson:2.8.4'
网友评论