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
- JSON GSON 例子 待整理
- 4-16 文件管理 XML解析 JSON GSON 笔记 待整理
- 【搜集,整理】Gson解析Json示例,详解
- FastJson和Gson解析json的小例子
- 安卓中使用Gson解析json方法详解与使用例子
- Json----gson
- Json & Gson
- json & gson
- gson json
- GSON@JSON
- 待整理
- 待整理
- 待整理
- 待整理
- 待整理
- 待整理
- 待整理......
- 待整理
- Pushing the Limits of Windows: Paged and Nonpaged Pool
- android学习01
- 页面加载的性能优化
- 顺时针打印矩阵
- 常用网址
- JSON GSON 例子 待整理
- java面试题训练160720
- JAVA接口(Interface)和抽象类(Abstact)
- java 插入排序算法
- virtualbox下ubuntu访问主机共享文件夹
- SpringMVC接收复杂集合参数
- 类构造函数初始值列表
- String,StringBuffer与StringBuilder的区别??
- 一个关于NetworkComms.Net的入门教程官方视频