转载地址 : https://www.cnblogs.com/jianyungsun/p/6647203.html
本文纯属自己加深印象,无意抄袭,转载地址在上面。
纯属手动有些拼写错误,请前往原文了解
解析简单纯数据json
如
{
"name": "zhangsan",
"age": "10",
"phone": "11111",
"email": "11111@11.com"
}
解析代码:
本地将json文件转成String方法
public static String getStringByJson(Context context, int fileId){
String resultString="";
try {
InputStream inputStream=context.getResources().openRawResource(fileId);
byte[] buffer=new byte[inputStream.available()];
inputStream.read(buffer);
resultString=new String(buffer,"UTF-8");
} catch (Exception e) {
e.printStackTrace();
}
return resultString;
}
解析步骤
第一步
通过本地方法将json文件内的数据转换成String
String resultobject= JsonToStringUtil.getStringByJson(MainActivity.this,R.raw.gson_1);
第二步 获取JsonParser解析对象
JsonParser parser=new JsonParser();
第三步 通过JsonParser中getASJsonObject得到JsonObject
JsonObject object=parser.parser(resultobject).getASJsonObject();
第四步 通过TypeToken得到Type就相当于实例UserBean.class的类
Type type=new TypeToken<Map<String,String>>(){}.getType();
第五步解析操作
Map<String,String> map=gson.fromJson(object,type);
第六步 通过循环得到内容
for (Map.Entry<String,String> entry:map.entrySet()){
tv_text.setText(entry.getKey()+"|"+entry.getValue());
}
第二种 解析存数组
如
[
{
"name": "zhangsan",
"age": "10",
"phone": "11111",
"email": "11111@11.com"
},
{
"name": "lisi",
"age": "20",
"phone": "22222",
"email": "22222@22.com"
},
...
}
]
解析代码
本地将json文件转成String方法
public static String getStringByJson(Context context, int fileId){
String resultString="";
try {
InputStream inputStream=context.getResources().openRawResource(fileId);
byte[] buffer=new byte[inputStream.available()];
inputStream.read(buffer);
resultString=new String(buffer,"UTF-8");
} catch (Exception e) {
e.printStackTrace();
}
return resultString;
}
第一步通过本地方法转换成String
String resultobject=JsonToStringUtil.getStringByJson(MainActivity.this,R.raw.gson_2);
第二步得解析对象
JsonParser parser1 = new JsonParser();
第三步通过JsonParser中JsonASArray 得到数组
JsonArray array=parser.parser(resultobject).getASJsonArray();
第四步 得GSON 对象用于解析
Gson gson=new Gson;
List<UserBean> userbeanList=new ArrayList<>();
第五步通过JsonElement方法来遍历array数组
for(JsonElement user: array ){
第六步解析
UserBean userbean=gson.fromJson(user,UserBean.class);
userbeanList.add(userbean)
//适配器自己写一个
lv_list.setAdapter(new UserAdapter(Mainactivity.this,userbeanList));
}
//适配器代码
public class UserAdapter extends BaseAdapter{
private Context context;
private List<UserBean> userBeanList;
private LayoutInflater inflater;
public UserAdapter(){}
public UserAdapter(Context context,List<UserBean> userBeanList){
this.context=context;
this.userBeanList=userBeanList;
inflater=LayoutInflater.from(context);
}
@Override
public int getCount() {
return userBeanList==null?0:userBeanList.size();
}
@Override
public Object getItem(int i) {
return userBeanList.get(i);
}
@Override
public long getItemId(int i) {
return i;
}
@Override
public View getView(int i, View view, ViewGroup viewGroup) {
ViewHlder viewHlder=null;
if (view == null){
view=inflater.inflate(R.layout.list_adapter,null);
viewHlder=new ViewHlder();
viewHlder.textView=view.findViewById(R.id.tv_text);
viewHlder.textView1=view.findViewById(R.id.tv_text1);
viewHlder.textView2=view.findViewById(R.id.tv_text2);
viewHlder.textView3=view.findViewById(R.id.tv_text3);
view.setTag(viewHlder);
}else {
viewHlder=(ViewHlder) view.getTag();
}
viewHlder.textView.setText(userBeanList.get(i).getName());
viewHlder.textView1.setText(userBeanList.get(i).getAge());
viewHlder.textView2.setText(userBeanList.get(i).getPhone());
viewHlder.textView3.setText(userBeanList.get(i).getEamile());
return view;
}
class ViewHlder{
private TextView textView;
private TextView textView1;
private TextView textView2;
private TextView textView3;
}
}
第三种解析
如
{
"muser": [
{
"name": "zhangsan",
"age": "10",
"phone": "11111",
"email": "11111@11.com"
},
{
"name": "lisi",
"age": "20",
"phone": "22222",
"email": "22222@22.com"
},
...
]
}
解析代码
本地将json文件转成String方法
public static String getStringByJson(Context context, int fileId){
String resultString="";
try {
InputStream inputStream=context.getResources().openRawResource(fileId);
byte[] buffer=new byte[inputStream.available()];
inputStream.read(buffer);
resultString=new String(buffer,"UTF-8");
} catch (Exception e) {
e.printStackTrace();
}
return resultString;
}
第一步通过本地方法转换成String
String resultobject=JsonToStringUtil.getStringByJson(MainActivity.this,R.raw.gson_2);
第二步得解析对象
JsonParser parser1 = new JsonParser();
第三步通过JsonParser中JsonASObject 得到object
JsonObject object=parser.parser(resultobject).getASJsonObject();
JsonArray array=object.getASJsonArray("muser");
//第五步等得到GSON对象和List集合对象
Gson gson1 = new Gson();
List<UserBean> userBeanlist1 = new ArrayList<UserBean>();
//通过JsonElemnt遍历数组并显示到adapter上
for (JsonElement user: array1) {
UserBean userBear=gson1.fromJson(user,new TypeToken<UserBean>(){}.getType());
userBeanlist1.add(userBear);
}
设置在listView上
tv_listView.setAdapter(new UserAdapter(MainActivity.this,userBeanlist1));
第四种解析
如
{
"code": 200,
"msg": "OK",
"muser": [
{
"name": "zhangsan",
"age": "10",
"phone": "11111",
"email": "11111@11.com"
},
{
"name": "lisi",
"age": "20",
"phone": "22222",
"email": "22222@22.com"
},
...
]
}
多了个code,与msg
这个时候我们的UserBean实例需要变一下
public class UserBeankz {
private String code;
private String msg;
private List<UserBean> muser;
public class UserBean{
private String name ;
private String age;
private String phone;
private String email;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAge() {
return age;
}
public void setAge(String age) {
this.age = age;
}
public String getPhone() {
return phone;
}
public void setPhone(String phone) {
this.phone = phone;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
}
public String getCode() {
return code;
}
public void setCode(String code) {
this.code = code;
}
public String getMsg() {
return msg;
}
public void setMsg(String msg) {
this.msg = msg;
}
public List<UserBean> getMuser() {
return muser;
}
public void setMuser(List<UserBean> muser) {
this.muser = muser;
}
}
解析代码
本地将json文件转成String方法
public static String getStringByJson(Context context, int fileId){
String resultString="";
try {
InputStream inputStream=context.getResources().openRawResource(fileId);
byte[] buffer=new byte[inputStream.available()];
inputStream.read(buffer);
resultString=new String(buffer,"UTF-8");
} catch (Exception e) {
e.printStackTrace();
}
return resultString;
}
第一步通过本地方法转换成String
String resultobject2=JsonToStringUtil.getStringByJson(MainActivity.this,R.raw.gson_3);
第二步直接解析json
UserBeankz user=new Gson().fromJson(resultobject2,UserBeankz.class);
第三步从UserBean中的实例方法得到muser,然后将muser中的数据展示在listView上
List<UserBeankz.UserBean> users=user.getMuser();
lv_list.setAdapter(new ResultAdapter(MainActivity.this,users));
第五中解析
如
{
"muser": [
{
"name": "zhangsan",
"age": "10",
"phone": "11111",
"email": "11111@11.com"
},
{
"name": "lisi",
"age": "20",
"phone": "22222",
"email": "22222@22.com"
}
]
}
解析代码
这里要解析判断age大于30岁的人或者其他判断,由自己设定
本地将json文件转成String方法
public static String getStringByJson(Context context, int fileId){
String resultString="";
try {
InputStream inputStream=context.getResources().openRawResource(fileId);
byte[] buffer=new byte[inputStream.available()];
inputStream.read(buffer);
resultString=new String(buffer,"UTF-8");
} catch (Exception e) {
e.printStackTrace();
}
return resultString;
}
第一步通过本地方法转换成String
String resultobject2=JsonToStringUtil.getStringByJson(MainActivity.this,R.raw.gson_3);
第二步得JsonParser解析对象
JsonParser parser=new JsonParser();
JsonObject object=parser.parser(resultobject).getASObject();
JsonArray array=object.getASArray("muser");
Gson gson=new Gson();
List<UserBean> list=new ArrayList<>();
遍历
for(JsonElement user:array){
UserBean userbean=gson.fromJson(user,new TypeToken<UserBean>(){}.getType);
判断
if(Inter.parInt(userbean.getAge()>30)){
list.add(userbean);
}
}
lv.setAdapter(new UserAdapter(this,list));