第一种方法: 通过 JsonObject JsonArray 解析:
xml 布局文件:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" tools:context="com.lsc.yumo.jsondemo.MainActivity"> <Button android:text="解析json" android:onClick="parseJson" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <EditText android:id="@+id/et_name" android:hint="姓名" android:layout_width="match_parent" android:layout_height="wrap_content" /> <EditText android:id="@+id/et_age" android:hint="年龄" android:layout_width="match_parent" android:layout_height="wrap_content" /> </LinearLayout>
java代码实现:
package com.lsc.yumo.jsondemo; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.EditText; import com.lsc.yumo.jsondemo.bean.PersonBean; import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject; import java.util.ArrayList; import java.util.List; public class MainActivity extends AppCompatActivity { String json = "{\n" + "\"person\":[{\"name\":\"张某\",\"age\":\"20\"},{\"name\":\"李某\",\"age\":\"30\"},{\"name\":\"王某\",\"age\":\"40\"}]\n" + "\n" + "}"; List<PersonBean.Person> list = new ArrayList<>(); EditText etName, etAge; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); etName = findViewById(R.id.et_name); etAge = findViewById(R.id.et_age); } /** * 解析Json * * @param view */ public void parseJson(View view) { list.clear();//为了防止多次点击按钮的时候list重复添加 try { JSONObject jsonObject = new JSONObject(json);//解析json对象 JSONArray jsonArray = jsonObject.getJSONArray("person");//获取对象中的数组对象 for (int i = 0; i < jsonArray.length(); i++) { JSONObject child = jsonArray.getJSONObject(i);//获取数组对象中的每一个对象 String name = child.getString("name"); String age = child.getString("age"); PersonBean.Person person = new PersonBean.Person(); person.setAge(age); person.setName(name); // 将person对象放入list集合中 list.add(person); } //把存放在list中的数据拿出来 放到指定控件中 etName.setText(list.get(0).getName()); etAge.setText(list.get(2).getAge()); } catch (JSONException e) { e.printStackTrace(); } } }
bean类代码如下:
public class PersonBean { private List<Person> person; public List<Person> getPerson() { return person; } public void setPerson(List<Person> person) { this.person = person; } public static class Person { /** * name : 张某 * age : 20 */ private String name; private String age; 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; } } }
运行效果:
点击按钮以后的效果图如下:
第二种方法:利用Gson解析Json
首先导入Gson依赖包
compile 'com.google.code.gson:gson:2.6.2'
布局文件 和bean类文件 同上
java 代码:
public class MainActivity extends AppCompatActivity { String json = "{\n" + "\"person\":[{\"name\":\"张某\",\"age\":\"20\"},{\"name\":\"李某\",\"age\":\"30\"},{\"name\":\"王某\",\"age\":\"40\"}]\n" + "\n" + "}"; EditText etName, etAge; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); etName = findViewById(R.id.et_name); etAge = findViewById(R.id.et_age); } /** * 解析Json * * @param view */ public void parseJson(View view) { Gson gson = new Gson(); PersonBean result = gson.fromJson(json,PersonBean.class); etName.setText(result.getPerson().get(0).getName()); etAge.setText(result.getPerson().get(1).getAge()); } }就是这么任性