• android中Json的一些应用


    JSON(JavaScript Object Notation) :一种轻量级的数据交换格式,基于JavaScript的一个子集。 JSON采用完全独立于语言的文本格式,使JSON成为理想的数据交换语言。易于人阅读和编写,同时也易于机器解析和生成(网络传输速度快)。作为一种数据交换格式,JSON优势很明显(相对与我们通常使用的XML):JSON比XML体积小;JSON和JavaScript交互更加方便;JSON的速度要远远大于XML;JSON的解析要比XML的解析要方便等。

               JSON语法规则:

    • 数据在名称/值(键值)对中
    • 数据由逗号(,)分隔
    • 花括号{}保存对象
    • 方(中)括号[]保存数组                                                                                                                                                                                    JSON 数据的书写格式是:名称/值对。名称主要是用加“”的字符串表示,值可以是多种格式,包括
    • 数字(整数或浮点数)
    • 字符串(在双引号("")中)
    • 逻辑值(true 或 false)
    • 数组(在方括号中)
    • 对象(在花括号中)
    • null

    下面是一个JSON格式的数示例:

    {  
    "tel" : ["12345678", "87654321"], // 数组形式,以方括号保存  
    "name" : "tianjiefeng", // 字符串  
    "age" : 20, // 数值  
    "address" : { "country" : "china", "province" : "guangdong" }, // JSON对象,以花括号保存  
    "graduate" : true // 布尔值  
    }

    那个Android开发中JSON格式的数据如何创建?又如何解析呢?首先举如何创建下面这个JSON的例子:

    private JSONObject createJSONData() {  
            // 最外层是花括号{},所以就是一个JSONObject对象  
            JSONObject student = new JSONObject();  
            try {  
                // 第1个value是[ ],也就是一个JSONArray对象  
                JSONArray tel= new JSONArray();  
                phone.put("12345678");  
                phone.put("87654321");  
                person.put("tel", tel);  
                // 第2个value一个字符串  
                person.put("name", "tianjiefeng");  
                // 第3个value一个字符串数值  
                person.put("age", 20);  
                // 第4个value一个JSONObject对象  
                JSONObject address = new JSONObject();  
                address.put("country", "china");  
                address.put("province", "guangdong");  
                person.put("address", address);  
                // 第5个value一个布尔值  
                person.put("graduate", true);  
            } catch (JSONException e) {  
                e.printStackTrace();  
            }  
            return student ;  
        }  

    如果要返回String字符串,只需要修改为return student.toString();下面看下如何把上面的JSON数据解析出来:

    private Map<String, Object> parseJSONData(String json) {  
            Map<String, Object> resultMap = new HashMap<String, Object>();  
            try {  
                // 直接把JSON字符串转化为一个JSONObject对象  
                JSONObject student= new JSONObject(json);  
                // 第1个键值对  
                resultMap.put("tel", person.getJSONArray("tel").toString());  
                // 第2个键值对  
                resultMap.put("name", person.getString("name"));  
                // 第3个键值对  
                resultMap.put("age", person.getInt("age"));  
                // 第4个键值对  
                resultMap.put("address", person.getJSONObject("address").toString());  
                // 第5个键值对  
                resultMap.put("graduate", person.getBoolean("married"));  
            } catch (JSONException e) {  
                e.printStackTrace();  
            }  
            return resultMap;  
        }  
    } 上面就是用我们用JSONObject 及JSONArray进行数据操作。但在实际开发中,我们一般都会使用Gson解析JSON数据 
    首先,从 code.google.com/p/google-gson/downloads/list下载GsonAPI和相关jar包,然后通过GJSON封装的方法来处理数据。 Gson的解析非常简单,但是它的解析规则是必须有一个bean文件,这个bean文件的内容跟JSon数据类型是一一对应。Gson有两个重要的方法,一个就是tojson(tojson就是将bean里面的内容转换为json内容),一个就是fromjson(从我们的Json对象封装出一个一个的bean对象)。其简单的例子可以参考:http://blog.csdn.net/kongzhichen/article/details/10135051 

    补充知识:上面例子可以不看,看下面这个链接里面的讲的比较详细

    http://www.open-open.com/lib/view/open1326376799874.html

    http://www.open-open.com/doc/view/dcaf018b28a44ed188e84a07cfff080d

  • 相关阅读:
    XOR Clique
    Live Love
    Wannafly挑战赛24 A:石子游戏
    洛谷 P1060 :开心的金明
    洛谷P1049: 装箱问题
    牛客练习赛26 A:平面
    hihoCoder1151: 骨牌覆盖问题·二
    hihoCoder1143:骨牌覆盖问题·一
    hihoCoder1051 : 补提交卡
    TCP Socket的通讯框架
  • 原文地址:https://www.cnblogs.com/linjulin/p/5970006.html
Copyright © 2020-2023  润新知