Android json的使用
2015-11-07 23:12
260 查看
public class JSONActivity extends Activity { private String jsonFile = "/sdcard/test.json"; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_json); } private static class Product { public String id; public String name; public Product(String id, String name) { this.id = id; this.name = name; } } public void writeProduct(JsonWriter writer, Product product) throws IOException { writer.beginObject(); writer.name("id").value(product.id); writer.name("name").value(product.name); writer.endObject(); } public void writeProductArray(JsonWriter writer, List<Product> products) throws IOException { writer.beginArray(); for (Product product : products) { writeProduct(writer, product); } writer.endArray(); } public void writeJsonStream(OutputStream out, List<Product> products) throws IOException { JsonWriter writer = new JsonWriter(new OutputStreamWriter(out, "UTF-8")); writer.setIndent(" "); writeProductArray(writer, products); writer.close(); } public void onClick_WriteJSON(View view) { try { FileOutputStream fos = new FileOutputStream(jsonFile); List<Product> products = new ArrayList<Product>(); products.add(new Product("0001", "Nexus S")); products.add(new Product("0002", "谷歌眼镜")); writeJsonStream(fos, products); Toast.makeText(this, "成功保存JSON数据", Toast.LENGTH_LONG).show(); } catch (Exception e) { } } public List<Product> readJsonStream(InputStream in) throws IOException { JsonReader reader = new JsonReader(new InputStreamReader(in, "UTF-8")); try { return readProductArray(reader); } finally { reader.close(); } } public List readProductArray(JsonReader reader) throws IOException { List<Product> products = new ArrayList<Product>(); reader.beginArray(); while (reader.hasNext()) { products.add(readProduct(reader)); } reader.endArray(); return products; } public Product readProduct(JsonReader reader) throws IOException { String id = null; String name = null; reader.beginObject(); while (reader.hasNext()) { String field = reader.nextName(); if (field.equals("id")) { id = reader.nextString(); } else if (field.equals("name")) { name = reader.nextString(); } else { reader.skipValue(); } } reader.endObject(); return new Product(id, name); } public void onClick_ReadJSON(View view) { try { FileInputStream fis = new FileInputStream(jsonFile); List<Product> products = readJsonStream(fis); if(products != null) { String result = ""; for(Product product: products) { result += "id:" + product.id + " name:" + product.name + "\n"; } Toast.makeText(this, result, Toast.LENGTH_LONG).show(); } } catch(Exception e) { } } }
相关文章推荐
- android:scrollbarStyle属性及滚动条和分割线覆盖问题
- android开发学习笔记——自定义布局的dialog宽度的问题
- Android系统安全之旅 第1章 运行编译过的Android系统
- Android系统安全之旅 第1章 编译Android程序的方法
- Android图片本地载入,显示绝对路线,并载入
- 第一次使用Android Studio 下载安装设置(1)
- Android IOS WebRTC 音视频开发总结(五二)-- 亲,咱一起采访webrtc大会的各路专家
- Android碰撞的小球,密集恐惧症者谨慎
- Android中自定义控件获取text的宽高方式
- Android--Listview学习
- 关于Android Studio如何导入library project
- 调用Android相机拍照的问题
- aidl(android 接口定义语言)
- 怎么样将android studio或者xamarin studio默认界面的标题栏去掉,便于html5打包apk,为了美观
- Android TouchEvent事件传递机制
- robotium 中获取相同类型的自控觉得获取方法(使用Android的ViewGroup控件的getChildAt(index)获取)
- Android NDK开发之《HelloJni》
- Android 自定义seekbar 代码实现
- Android存储-SQLite
- android 5.0新特性CardView教程