解析Json的方法

第一种方法: 通过 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());
    }

}
就是这么任性大笑





猜你喜欢

转载自blog.csdn.net/weixin_42190712/article/details/80330085
今日推荐