Android json的使用

37 篇文章 0 订阅
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)
        {

        }
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值