zoukankan      html  css  js  c++  java
  • Json

    javascript 与Json的一个例子:

    <html>
    <body>
    <h2>通过 JSON 字符串来创建对象</h3>
    <p>
    First Name: <span id="fname"></span><br />
    Last Name: <span id="lname"></span><br />
    </p>
    <script type="text/javascript">
    var txt = '{"employees":[' +
    '{"firstName":"Bill","lastName":"Gates" },' +
    '{"firstName":"George","lastName":"Bush" },' +
    '{"firstName":"Thomas","lastName":"Carter" }]}';

    obj = JSON.parse(txt);

    document.getElementById("fname").innerHTML=obj.employees[1].firstName
    document.getElementById("lname").innerHTML=obj.employees[1].lastName
    </script>
    </body>
    </html>

    定义:

          JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。它基于JavaScript(Standard ECMA-262 3rd Edition - December 1999)的一个子集。 JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C, C++, C#, Java, JavaScript, Perl, Python等)。这些特性使JSON成为理想的数据交换语言。易于人阅读和编写,同时也易于机器解析和生成,但是其可读性不如XML语言

          可以将Json看做是一个存储数据的方式,存储方式就是Java语言中典型的Map键值对方式,负责数据格式的转换。在不同的语言中,它被理解为对象(object),记录(record),结构(struct),字典(dictionary),哈希表(hash table),有键列表(keyed list),或者关联数组 (associative array)。

    如下所示,一个Json对象可以表示为:

    { "people": [

     { "firstName": "Brett", "lastName":"McLaughlin", "email": "brett@newInstance.com" },
     { "firstName": "Jason", "lastName":"Hunter", "email": "jason@servlets.com" },
     { "firstName": "Elliotte", "lastName":"Harold", "email": "elharo@macfaq.com" }
    ]}

    其中{}表示为一个对象,[]表示为一个数组,并且这两个数据对象可以相互嵌套,他们的取值方式有点区别,直接看例子。如果想取firstName:Jason的这个对象,则表示取对象people数据中的第1个元素对象中的第0个对象,即:"Jason" = people[1].firstName,"Harold" = people[2].lastName.

    转化为 JSON 格式数据 ( Java语言。

    将 String 对象编码为 JSON 格式时,只需处理好特殊字符即可。另外,必须用 (") 而非 (') 表示字符串:

     
     static String string2Json(String s) { 
        StringBuilder sb = new StringBuilder(s.length()+20); 
        sb.append('\"'); 
        for (int i=0; i<s.length(); i++) { 
            char c = s.charAt(i); 
            switch (c) { 
            case '\"': 
                sb.append("\\\""); 
                break; 
            case '\\': 
                sb.append("\\\\"); 
                break; 
            case '/': 
                sb.append("\\/"); 
                break; 
            case '\b': 
                sb.append("\\b"); 
                break; 
            case '\f': 
                sb.append("\\f"); 
                break; 
            case '\n': 
                sb.append("\\n"); 
                break; 
            case '\r': 
                sb.append("\\r"); 
                break; 
            case '\t': 
                sb.append("\\t"); 
                break; 
            default: 
                sb.append(c); 
            } 
        } 
        sb.append('\"'); 
        return sb.toString(); 
     } 

    Number 转化 JSON,可以处理 Integer,Long,Float 等多种 Number 格式:

     
     static String number2Json(Number number) { 
        return number.toString(); 
     } 

    Boolean 类型:

     
     static String boolean2Json(Boolean bool) { 
        return bool.toString(); 
     } 

    数组编码为 JSON 格式:

     
     static String array2Json(Object[] array) { 
        if (array.length==0) 
            return "[]"; 
        StringBuilder sb = new StringBuilder(array.length << 4); 
        sb.append('['); 
        for (Object o : array) { 
            sb.append(toJson(o)); 
            sb.append(','); 
        } 
        // 将最后添加的 ',' 变为 ']': 
        sb.setCharAt(sb.length()-1, ']'); 
        return sb.toString(); 
     } 

     Map<String, Object> 编码为 JSON 格式:

     
     static String map2Json(Map<String, Object> map) { 
        if (map.isEmpty()) 
            return "{}"; 
        StringBuilder sb = new StringBuilder(map.size() << 4); 
        sb.append('{'); 
        Set<String> keys = map.keySet(); 
        for (String key : keys) { 
            Object value = map.get(key); 
            sb.append('\"'); 
            sb.append(key); 
            sb.append('\"'); 
            sb.append(':'); 
            sb.append(toJson(value)); 
            sb.append(','); 
        } 
        // 将最后的 ',' 变为 '}': 
        sb.setCharAt(sb.length()-1, '}'); 
        return sb.toString(); 
     } 

    方法 toJson(Object),能够将任意的 Java 对象编码为 JSON 格式:

     
     public static String toJson(Object o) { 
        if (o==null) 
            return "null"; 
        if (o instanceof String) 
            return string2Json((String)o); 
        if (o instanceof Boolean) 
            return boolean2Json((Boolean)o); 
        if (o instanceof Number) 
            return number2Json((Number)o); 
        if (o instanceof Map) 
            return map2Json((Map<String, Object>)o); 
        if (o instanceof Object[]) 
            return array2Json((Object[])o); 
        throw new RuntimeException("Unsupported type: " + o.getClass().getName()); 
     } 

  • 相关阅读:
    阿里云SSL证书到期(续期)图文教程
    nginx: [error] open() "/var/run/nginx.pid" failed (2: No such file or directory)
    Mysql读写分离,主从同步实现
    MySQL Waiting for table metadata lock的解决方法
    MYSQL 版本5.7.24 sql_mode=only_full_group_by问题
    CentOS7下PHP7.2安装redis扩展
    每天写点python
    vim 编辑器的光标操作
    【linux使用】bash shell命令行常用快捷键 (转载)
    centos7 cannot find a valid baseurl for repo base (转载)
  • 原文地址:https://www.cnblogs.com/lovemo1314/p/2662454.html
Copyright © 2011-2022 走看看