zoukankan      html  css  js  c++  java
  • JAVA & JSON详解

    JSON定义

    JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。它基于ECMAScript的一个子集。 JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C、C++、C#、Java、JavaScript、Perl、Python等)。这些特性使JSON成为理想的数据交换语言。 易于人阅读和编写,同时也易于机器解析和生成(网络传输速率)。

    JSON用途

    • 使用基于JavaScript的应用程序,其中包括浏览器扩展和网站

    • 使用JSON格式序列化和结构化的数据传输网络连接

    • 这主要用于服务器和Web应用程序之间的数据传输

    • Web服务和API采用JSON格式提供公共数据

    • 它可以用来与现代编程语言

    JSON的特点

    • 易于读写JSON

    • 轻量级的基于文本的交换格式

    • 独立语言

    JSON 语法规则

    JSON 语法是 JavaScript 对象表示语法的子集。
    • 数据在键值对中
    • 数据由逗号分隔
    • 花括号保存对象
    • 方括号保存数组

    JSON 名称/值对

    JSON 数据的书写格式是:名称/值对。
    名称/值对组合中的名称写在前面(在双引号中),值对写在后面(同样在双引号中),中间用冒号隔开:
    {"firstName":"Brett","lastName":"McLaughlin","email":"aaaa"}
    

      JSON格式支持的数据类型有以下:

    类型描述
    Number 在JavaScript中的双精度浮点格式
    String 双引号的反斜杠转义的Unicode
    Boolean true 或 false
    Array 值的有序序列
    Value 它可以是一个字符串,一个数字,真的还是假(true/false),空(null )等
    Object 无序集合键值对
    Whitespace 可以使用任何一对中的令牌
    null empty

    以下转自:易百教程网

    JSON和Java实体之间的映射

    JSON.simple实体映射从左侧向右侧解码或解析,并映射实体从右侧到左侧编码。

    JSONJava
    string java.lang.String
    number java.lang.Number
    true|false ava.lang.Boolean
    null null
    array java.util.List
    object java.util.Map

    虽然解码,默认 java.util.List的具体类是具体类 org.json.simple.JSONArray 和默认 java.util.Map 是org.json.simple.JSONObject。

    下面是一个简单的例子来编码JSONObject使用Java的JSON对象的一个子类的java.util.HashMap 无序。如果您需要严格的顺序元素使用方法JSONValue.toJSONString(映射)有序映射实现作为 java.util.LinkedHashMap等。

    import org.json.simple.JSONObject;
    
    class JsonEncodeDemo 
    {
       public static void main(String[] args) 
       {
          JSONObject obj = new JSONObject();
    
          obj.put("name", "foo");
          obj.put("num", new Integer(100));
          obj.put("balance", new Double(1000.21));
          obj.put("is_vip", new Boolean(true));
    
          System.out.print(obj);
       }
    }
    

      

    虽然上述程序的编译和执行,这将产生以下结果:

    {"balance": 1000.21, "num":100, "is_vip":true, "name":"foo"}

    以下是另一个例子,它显示了使用Java的JSONObject 的 JSON对象流:

    import org.json.simple.JSONObject;
    
    class JsonEncodeDemo 
    {
       public static void main(String[] args) 
       {
          JSONObject obj = new JSONObject();
    
          obj.put("name","foo");
          obj.put("num",new Integer(100));
          obj.put("balance",new Double(1000.21));
          obj.put("is_vip",new Boolean(true));
    
          StringWriter out = new StringWriter();
          obj.writeJSONString(out);
          
          String jsonText = out.toString();
          System.out.print(jsonText);
       }
    } 

    虽然上述程序的编译和执行,这将产生以下结果:

    {"balance": 1000.21, "num":100, "is_vip":true, "name":"foo"} 

    在Java的JSON解码

    下面的例子利用的JSONObject 和JSONArray JSONObject 是一个java.util.Map JSONArray是一个java.util.List,所以可以对其进行访问 Map 和List 的标准操作。

    import org.json.simple.JSONObject;
    import org.json.simple.JSONArray;
    import org.json.simple.parser.ParseException;
    import org.json.simple.parser.JSONParser;
    
    class JsonDecodeDemo 
    {
       public static void main(String[] args) 
       {
          JSONParser parser=new JSONParser();
          String s = "[0,{"1":{"2":{"3":{"4":[5,{"6":7}]}}}}]";
          try{
             Object obj = parser.parse(s);
             JSONArray array = (JSONArray)obj;
             System.out.println("The 2nd element of array");
             System.out.println(array.get(1));
             System.out.println();
    
             JSONObject obj2 = (JSONObject)array.get(1);
             System.out.println("Field "1"");
             System.out.println(obj2.get("1"));    
    
             s = "{}";
             obj = parser.parse(s);
             System.out.println(obj);
    
             s= "[5,]";
             obj = parser.parse(s);
             System.out.println(obj);
    
             s= "[5,,2]";
             obj = parser.parse(s);
             System.out.println(obj);
          }catch(ParseException pe){
             System.out.println("position: " + pe.getPosition());
             System.out.println(pe);
          }
       }
    }

    虽然上述程序的编译和执行,这将产生以下结果:

    The 2nd element of array
    {"1":{"2":{"3":{"4":[5,{"6":7}]}}}}
    
    Field "1"
    {"2":{"3":{"4":[5,{"6":7}]}}}
    {}
    [5]
    [5,2]
  • 相关阅读:
    所有HTTP返回状态值,并说明用途
    几个简单的排序算法
    Linux命令大全
    存储过程中执行动态Sql语句
    IE8的背景不显示和图片错位 解决方案
    海量数据处理方法
    关于MSSQL的返回值问题
    SQL Server 2008不能修改表的解决方法
    转:读AD里特殊的属性in C#
    了解SMS的主要特性。
  • 原文地址:https://www.cnblogs.com/oumyye/p/4760261.html
Copyright © 2011-2022 走看看