package com.moliying.black.json_demo_1;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.JsonReader;
import android.view.View;
import android.widget.Toast;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Arrays;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
public void onclick(View v) {
ArrayList<User> users = parse();
Toast.makeText(MainActivity.this, users.toString(), Toast.LENGTH_SHORT).show();
}
private ArrayList<User> parse() {
ArrayList<User> users = null;
User user = null;
InputStream is = getResources().openRawResource(R.raw.user);
JsonReader jr = new JsonReader(new InputStreamReader(is));
try {
jr.beginArray();//开始解析数组— 根据解析类容判断解析的是数组或者object
users = new ArrayList<>();
while (jr.hasNext()) {//判断该数组或者对象有内容,有就返回ture
users.add(parseUser(jr));
}
jr.endArray();//结束数组
} catch (IOException e) {
e.printStackTrace();
}
return users;
}
private User parseUser(JsonReader jr) throws IOException {
User user;
jr.beginObject();
user = new User();
while (jr.hasNext()) {
String name = jr.nextName();//获取标签,前面的类似于key
if ("firstName".equals(name)) {
user.setFirstName(jr.nextString());
} else if ("lastName".equals(name)) {
user.setLastName(jr.nextString());
} else if ("email".equals(name)) {
user.setEmail(jr.nextString());
}
}
jr.endObject();
return user;
}
}