JSON


http://www.apkbus.com/forum.php?mod=viewthread&tid=13882


Android 平台上处理 Internet 上两种最常见的数据格式 — XML 和JSON,Feed 数据可以以 XML 和 JSON 格式从 Twitter 上获取 ,XML 随处可见,但是对于 Android 程序员来说并不是一个明智的选择,特别是,如果数据结构成为与 XML 结构伴随着的数据爆炸的牺牲品。像 Android 这样通常在蜂窝数据网络(cellular data network)上工作的资源受限平台不能存储和解析大量 XML 数据。然而,如果特殊编程任务要求文本和二进制数据交换,那么 XML 是一个可靠的选择。 

越来越多的 Internet API 供应商提供 JSON 作为一种数据格式。JSON 在 Ajax  网页编程社区中享有盛名。Ajax 技术使 web 页面可以动态地更新,只更新所选区域的数据而不用更新整个页面。由于较少数据被传送 — 更重要的是,因为较少的数据被解析且显示在浏览器窗口 — 使用 AJAX 的应用程序比起传统 web 应用程序能够提供一个更好的用户体验。
  XML 以其冗长而著名,而 JSON 也因其难度而闻名。JSON 对象其构造是一个键 :值 对,对象元素之间用逗号隔开,每个对象被包含在一对大括号 {} 内。一组对象数组包含在一对方括号中。这是将数据行从一个数据库发送到一个对象数组的一种常见方法。其中每个数组元素对应数据库中的一行,每个对象属性代表数据的一列。

总的来说,JSON 是:

  •   一种数据交换格式。
  •   JavaScript 对象作为字符串编码的一种方式。
  •   仅限于文本和数值。二进制值是明确不允许的。JSON 没有 CDATA 对应模式。
  •   在数据可读性费用方面、就数据大小而言比 XML 更经济。
  •   越来越多的 API 供应商将其作为一种选择,例如 Twitter。
  • void examineJSONFile()
        {
            try
            {
                String x = "";
                InputStream is = this.getResources().openRawResource(R.raw.jsontwitter);
                byte [] buffer = new byte[is.available()];
                while (is.read(buffer) != -1);
                String jsontext = new String(buffer);
                JSONArray entries = new JSONArray(jsontext);
    
                x = "JSON parsed.\nThere are [" + entries.length() + "]\n\n";
    
                int i;
                for (i=0;i<entries.length();i++)
                {
                    JSONObject post = entries.getJSONObject(i);
                    x += "------------\n";
                    x += "Date:" + post.getString("created_at") + "\n";
                    x += "Post:" + post.getString("text") + "\n\n";
                }
                tvData.setText(x);
            }
            catch (Exception je)
            {
                tvData.setText("Error w/file: " + je.getMessage());
            }
        }
      像之前显示的 XML 例程一样,从文件中读取数据到内存中,转换成一个 java.lang.String,然后解析成 JSONArray。要注意的是,正如此例所示,一个特殊的字符串能直接解析成一个数组,或者也可以直接解析成一个 JSONObject。因为 Twitter 数据是一个对象数组,整体解析成一个数组然后按顺序逐个访问对象是明智的选择。
      该方法的流程简单明了,一旦数据被解析,代码建立一个类似于 XML 解析器处理程序方法的字符串表示。有趣的是数据将由您来管理;您不需要建立额外内存结构来容纳数据,同样地,应用程序预先就知道在 JSONArray 中有多少个条目(在这个例子中是 20 个)。
      尽管 JSON 解析在编程上简单得多,但并不是没有代价的。它要增加内存消耗,在处理之前整体读取数据流并进行存储。相反的,SAX XML 方法仅使用相关数据。另外,如果解析特殊 JSON 对象的内存是足够的,则这个方法将很受应用程序欢迎,特别是,几乎不需要使用 DOM 的应用程序。
      比起 JSON 方法,XML 方法更快、内存受限更小 — 但是以增加复杂性为代价。


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值