获取JSON数据客户端

来源:互联网 发布:淘宝网标志 编辑:程序博客网 时间:2024/04/29 04:34

因为使用的android studio 所以没有导入JSON库,仅仅在使用的时候自动导入了。

定义一个Person类//就是要接收的数据,尽量跟客户端一样


 public class Person {
    private String name;
    private String address;
    private String age;

    public Person(String name, String address, String age) {
        this.name = name;
        this.address = address;
        this.age = age;
    }

    public Person(){};

    @Override
    public String toString() {
        return "Person{" +
                "name='" + name + '\'' +
                ", address='" + address + '\'' +
                ", age='" + age + '\'' +
                '}';
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getAddress() {
        return address;
    }

    public void setAddress(String address) {
        this.address = address;
    }

    public String getAge() {
        return age;
    }

    public void setAge(String age) {
        this.age = age;
    }
}

然后定义一个获取JSON的类到时候方便直接调用函数

类JsonParse


 public class JsonParse {

    public static List<Person> getListPerson(String urlPath) throws Exception {

        List<Person> mlists = new ArrayList<Person>();

        byte[] data = readParse(urlPath);

        JSONArray array = new JSONArray(new String(data));

        for (int i = 0; i < array.length(); i++) {
            JSONObject item = array.getJSONObject(i);
            String name = item.getString("name");
            String address = item.getString("address");
            String age = item.getString("age");
            mlists.add(new Person(name,address,age));

        }

        return mlists;

    }

    public static byte[] readParse(String urlPath) throws Exception {

        ByteArrayOutputStream outStream = new ByteArrayOutputStream();

        byte[] data = new byte[1024];

        int len = 0;

        URL url = new URL(urlPath);

        HttpURLConnection conn = (HttpURLConnection) url.openConnection();

        InputStream inStream = conn.getInputStream();

        while ((len = inStream.read(data)) != -1) {

            outStream.write(data, 0, len);

        }

        inStream.close();

        return outStream.toByteArray();

    }
}


主Activity


  Button button;
    private List<Person> persons;
    private static final String urlpath1 = "http://***这里的地址一定要用cmd的ipconfig查*****:8080/LoginDemoin/LoginServlet

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        button= (Button) findViewById(R.id.but);
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                try {
                    persons=JsonParse.getListPerson(urlpath1);
                    List<HashMap<String,Object>>data = new ArrayList<HashMap<String, Object>>();
                    for(int i=0;i<persons.size();i++)
                    {
                        //  HashMap<String,Object>map=new HashMap<String, Object>();
                        // map.put("name")
                        Toast.makeText(MainActivity.this,persons.get(i).getName().toString(),Toast.LENGTH_LONG).show();
                    }
                }catch (Exception e){
                    Toast.makeText(MainActivity.this,"解析失败",Toast.LENGTH_SHORT).show();
                }
            }
        });
    }


0 0
原创粉丝点击