JSON GSON 例子 待整理

来源:互联网 发布:午夜美女直播软件 编辑:程序博客网 时间:2024/05/16 01:28


 res/raw 下的  message.json 文件

<strong><span style="font-size:18px;">[  {    "id": 912345678901,    "text": "How do I read JSON on Android?",    "geo": null,    "user": {      "name": "android_newb",      "followers_count": 41    }  },  {    "id": 912345678902,    "text": "@android_newb just use android.util.JsonReader!",    "geo": [50.454722, -104.606667],    "user": {      "name": "jesse",      "followers_count": 2    }  }]</span></strong>

message 类

<span style="font-size:14px;">public class Message {    private long id;    private String text;    private ArrayList<Double> geo;    private User2 user2;    public long getId() {        return id;    }    public void setId(long id) {        this.id = id;    }    public String getText() {        return text;    }    public void setText(String text) {        this.text = text;    }    public ArrayList<Double> getGeo() {        return geo;    }    public void setGeo(ArrayList<Double> geo) {        this.geo = geo;    }    public User2 getUser2() {        return user2;    }    public void setUser2(User2 user2) {        this.user2 = user2;    }    @Override    public String toString() {        return "Message{" +                "id=" + id +                ", text='" + text + '\'' +                ", geo=" + geo +                ", user2=" + user2 +                '}';    }}</span>


User2 类

<span style="font-size:14px;">public class User2 {    private String name;    private int followers_count;    public String getName() {        return name;    }    public void setName(String name) {        this.name = name;    }    public int getFollowers_count() {        return followers_count;    }    public void setFollowers_count(int followers_count) {        this.followers_count = followers_count;    }    @Override    public String toString() {        return "User2{" +                "name='" + name + '\'' +                ", followers_count=" + followers_count +                '}';    }}</span>



<span style="font-size:14px;">public class JSONActivity extends AppCompatActivity {    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_json);    }    public void jsonSimpleClick(View view){        ArrayList<User> list = parseJSON();        System.out.println(list);    }    private ArrayList<User> parseJSON() {        InputStream in = getResources().openRawResource(R.raw.user);        JsonReader jsonReader = new JsonReader(new InputStreamReader(in));        ArrayList<User> list = new ArrayList<>();        try {            jsonReader.beginArray();            while (jsonReader.hasNext()){                User user = getUser(jsonReader);                list.add(user);            }            jsonReader.endArray();        } catch (IOException e) {            e.printStackTrace();        }        return list;    }    @NonNull    private User getUser(JsonReader jsonReader) throws IOException {        jsonReader.beginObject();        User user = new User();        while(jsonReader.hasNext()){            String name = jsonReader.nextName();            if("firstName".equals(name)){                user.setFirstName(jsonReader.nextString());            }else if("lastName".equals(name)){                user.setLastName(jsonReader.nextString());            }else if("email".equals(name)){                user.setEmail(jsonReader.nextString());            }        }        jsonReader.endObject();        return user;    }    public void parseJSONClick(View view){        ArrayList<Message> messages = parseJSON2();        for (Message message : messages) {            Log.i("Message",message.toString());        }    }    private ArrayList parseJSON2() {        InputStream in = getResources().openRawResource(R.raw.message);        JsonReader jsonReader = new JsonReader(new InputStreamReader(in));        try {             return readMessageArray(jsonReader);        }finally {            try {                jsonReader.close();            } catch (IOException e) {                e.printStackTrace();            }        }    }    /**     * 解析数组     * @param jsonReader     * @return     */    private ArrayList<Message> readMessageArray(JsonReader jsonReader){        ArrayList<Message> messages = new ArrayList();        try {            jsonReader.beginArray();            while (jsonReader.hasNext()){                messages.add(readMessage(jsonReader));            }            jsonReader.endArray();        } catch (IOException e) {            e.printStackTrace();        }        return messages;    }    /**     * 解析一个对象     * @param jsonReader     * @return     */    private Message readMessage(JsonReader jsonReader) {        Message m = null;        String name = null;        try {            jsonReader.beginObject();            m = new Message();            while (jsonReader.hasNext()){                name = jsonReader.nextName();                if("id".equals(name)){                    m.setId(jsonReader.nextLong());                }else if("text".equals(name)){                    m.setText(jsonReader.nextString());                }else if("geo".equals(name) && jsonReader.peek()!= JsonToken.NULL){                    m.setGeo(readGeo(jsonReader));                }else if("user".equals(name)){                    m.setUser2(readUser(jsonReader));                }else{                    jsonReader.skipValue();                }            }            jsonReader.endObject();        } catch (IOException e) {            e.printStackTrace();        }        return m;    }    //解析一个User对象    private User2 readUser(JsonReader jsonReader) {        User2 user = new User2();        String name = null;        try {            jsonReader.beginObject();            while (jsonReader.hasNext()){                name = jsonReader.nextName();                if("name".equals(name)){                    user.setName(jsonReader.nextString());                }else if("followers_count".equals(name)){                    user.setFollowers_count(jsonReader.nextInt());                }else{//                    jsonReader.skipValue();                }            }            jsonReader.endObject();        } catch (IOException e) {            e.printStackTrace();        }        return user;    }    /**     * 解析Geo     * @param jsonReader     * @return     */    private ArrayList<Double> readGeo(JsonReader jsonReader) {        ArrayList<Double> geo = new ArrayList();        try {            jsonReader.beginArray();            while (jsonReader.hasNext()){                geo.add(jsonReader.nextDouble());            }            jsonReader.endArray();        } catch (IOException e) {            e.printStackTrace();        }        return geo;    }    /**     * 生成一组JSON数据     * @param view     */    public void createJSONClick(View view){        ArrayList<User> users = new ArrayList<>();        users.add(new User("hong","cai","hc@qq.com"));        users.add(new User("da","lei","dalei@qq.com"));        users.add(new User("zhang","wei","zw@qq.com"));        createJSON(users);    }    /**     * 创建 一个JSON数据     * @param users     * @return     */    private String createJSON(ArrayList<User> users) {        JSONArray array = new JSONArray();        for (User user : users) {            JSONObject obj = new JSONObject();            try {                obj.put("firstName",user.getFirstName());                obj.put("lastName",user.getLastName());                obj.put("email",user.getEmail());            } catch (JSONException e) {                e.printStackTrace();            }            array.put(obj);        }        return array.toString();    }    public void gsonClick(View v){        gson();    }    //使用GSON        需要在工程 目录下的 libs中 导入 gson  jar包添加到工程的libs目录下,并添加到工程的类库中即可。    private void gson() {        Gson gson = new Gson();        //把JSON数据转换成JAVA对象        String json = "{\"firstName\": \"DAI\",\"lastName\": \"BOBO\",\"email\": \"bobo@moliying.com\"}";        User user = gson.fromJson(json,User.class);        Log.i("JSON",user.toString());        //把JSON数组转换成JAVA对象集合        String json2 = "[{\"firstName\": \"DAI\",\"lastName\": \"BOBO\",\"email\": \"bobo@moliying.com\"}," +                "{\"firstName\": \"hong\",\"lastName\": \"cai\",\"email\": \"hc@moliying.com\"}]";        //new TypeToken<ArrayList<User>>(){}.getType()  指定使用类型存储JSON转换的对象        ArrayList<User> list = gson.fromJson(json2, new TypeToken<ArrayList<User>>(){}.getType());        for (User user1 : list) {            Log.i("JSON",user1.toString());        }        //把对象转换成JSON数据        User user3 = new User("hong","cai","hc@qq.com");        String json4 = gson.toJson(user3);        Log.i("JSON",json4);        //把一组对象转换成JSON数组        ArrayList<User> users = new ArrayList<>();        users.add(new User("hong","cai","hc@qq.com"));        users.add(new User("da","lei","dalei@qq.com"));        users.add(new User("zhang","wei","zw@qq.com"));        String json5 = gson.toJson(user);        Log.i("JSON",json5);    }//    class MyTypeToken extends TypeToken<ArrayList<User>>{}</span>



0 0
原创粉丝点击