1 本文的json数据格式:
{
"hotcolumns":[
{
"client": "mobile",
"cname": "看东西",
"ename": "ldax",
"hot": true,
},
{
"client": "mobile",
"cname": "仁说",
"ename": "sda,
"hot": true,
}
]
}
2 生成的model(JavaBean)
import java.util.List;
public class JsonBean {
public List<Hotcolumns> hotcolumns;
public List<Hotcolumns> getHotcolumns() {
return hotcolumns;
}
public void setHotcolumns(List<Hotcolumns> hotcolumns) {
this.hotcolumns = hotcolumns;
}
/*
"client": "mobile",
"cname": "看东西",
"ename": "ldx",
"hot": true,
*/
public static class Hotcolumns {
public String client;
public String cname;
public String ename;
public String hot;
public String getClient() {
return client;
}
public void setClient(String client) {
this.client = client;
}
public String getCname() {
return cname;
}
public void setCname(String cname) {
this.cname = cname;
}
public String getEname() {
return ename;
}
public void setEname(String ename) {
this.ename = ename;
}
public String getHot() {
return hot;
}
public void setHot(String hot) {
this.hot = hot;
}
}
}
3 调用
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
String json =readLocalJson(this); //读取数据 实际项目中一般加载网络数据:需异步请求网络
json=json.replace("\t","");
Gson gson = new Gson();
java.lang.reflect.Type type = new TypeToken<JsonBean>() {}.getType();
JsonBean jsonBean = gson.fromJson(json, type); //JsonBean.class
}
public static String readLocalJson(Context context){//这里测试程序 放在本地
String jsonString="";
String resultString="";
try {
InputStream inputStream = context.getResources().openRawResource(R.raw.test);
BufferedReader bufferedReader=new BufferedReader(new InputStreamReader(inputStream));
while ((jsonString=bufferedReader.readLine())!=null) {
resultString+=jsonString;
}
} catch (Exception e) {
// TODO: handle exception
}
return resultString;
}
}
ps:android studio中 GSon库导入比较简单:build.gradle中添加依赖: dependencies { compile 'com.google.code.gson:gson:2.2.4'}
若为简单的类型 可使用: gson.from(json JsonBean.class)
若为复杂的类型 : 使用反射
本文两者皆可。