• jsonlib 使用 转换JSON


    JSON基础知识:

    JSON 数据格式解析
      和 XML 一样,JSON 也是基于纯文本的数据格式。由于 JSON 天生是为 JavaScript 准备的,因此,JSON 的数据格式非常简单,您可以用 JSON 传输一个简单的 String,Number,Boolean,也可以传输一个数组,或者一个复杂的 Object 对象。
      String,Number 和 Boolean 用 JSON 表示非常简单。例如,用 JSON 表示一个简单的 String “ abc ”,其格式为:
    "abc"
      除了字符 ",,/ 和一些控制符(b,f,n,r,t)需要编码外,其他 Unicode 字符可以直接输出。
    一个 Number 可以根据整型或浮点数表示如下:
     这与绝大多数编程语言的表示方法一致,例如:
    12345(整数)
    -3.9e10(浮点数)
      Boolean 类型表示为 true 或 false 。此外,JavaScript 中的 null 被表示为 null,注意,true、false 和 null 都没有双引号,否则将被视为一个 String 。
      JSON 还可以表示一个数组对象,使用 [] 包含所有元素,每个元素用逗号分隔,元素可以是任意的 Value,例如,以下数组包含了一个 String,Number,Boolean 和一个 null:
    ["abc",12345,false,null]
      Object 对象在 JSON 中是用 {} 包含一系列无序的 Key-Value 键值对表示的,实际上此处的 Object 相当于 Java 中的 Map<String, Object>,而不是 Java 的 Class 。注意 Key 只能用 String 表示。
      例如,一个 Address 对象包含如下 Key-Value:
    city:Beijing
    street:Chaoyang Road
    postcode:100025(整数)
      用 JSON 表示如下:
    {"city":"Beijing","street":" Chaoyang Road ","postcode":100025}
      其中 Value 也可以是另一个 Object 或者数组,因此,复杂的 Object 可以嵌套表示,例如,一个 Person 对象包含 name 和 address 对象,可以表示如下:
    {"name":"Michael","address":
      {"city":"Beijing","street":" Chaoyang Road ","postcode":100025}
    }

    JSON-lib这个Java类包用于把bean,list,map和XML转换成JSON并能够把JSON转回成bean和DynaBean。

    1、 首先要去官方下载json-lib工具包

    下载地址:

    http://sourceforge.net/projects/json-lib/files/json-lib/json-lib-2.4/

    目前最新的是2.4的版本,本示例中使用的是v2.3;json-lib还需要以下依赖包:

    jakarta commons-lang 2.5

    jakarta commons-beanutils 1.8.0

    jakarta commons-collections 3.2.1

    jakarta commons-logging 1.1.1

    ezmorph 1.0.6

    官方网址:http://json-lib.sourceforge.net/

    然后在工程中添加如下jar包:

    clip_image002

    当然你也可以用2.4的json-lib库

    1、List

        

    boolean[] boolArray = new boolean[]{true,false,true};        
    JSONArray jsonArray1 = JSONArray.fromObject( boolArray );       
    System.out.println( jsonArray1 );       
     // prints [true,false,true]      
        
     List list = new ArrayList();       
     list.add( "first" );       
     list.add( "second" );       
     JSONArray jsonArray2 = JSONArray.fromObject( list );       
     System.out.println( jsonArray2 );       
    / prints ["first","second"]      
     
     JSONArray jsonArray3 = JSONArray.fromObject( "['json','is','easy']" );       
     System.out.println( jsonArray3 );       
     // prints ["json","is","easy"]       
     
     boolean[] boolArray = new boolean[]{true,false,true};     
     JSONArray jsonArray1 = JSONArray.fromObject( boolArray );     
     System.out.println( jsonArray1 );     
      // prints [true,false,true]    
        
      List list = new ArrayList();     
      list.add( "first" );     
      list.add( "second" );     
      JSONArray jsonArray2 = JSONArray.fromObject( list );     
      System.out.println( jsonArray2 );     
      // prints ["first","second"]    
     
      JSONArray jsonArray3 = JSONArray.fromObject( "['json','is','easy']" );     
      System.out.println( jsonArray3 );     
      // prints ["json","is","easy"]   


    2、Map

       

    Map map = new HashMap();       
    map.put( "name", "json" );       
    map.put( "bool", Boolean.TRUE );       
        
    map.put( "int", new Integer(1) );       
    map.put( "arr", new String[]{"a","b"} );       
    map.put( "func", "function(i){ return this.arr[i]; }" );       
    JSONObject json = JSONObject.fromObject( map );       
    System.out.println( json );       
     //{"func":function(i){ return this.arr[i]; },"arr":["a","b"],"int":1,"name":"json","bool":true}    
     
    Map map = new HashMap();     
     map.put( "name", "json" );     
     map.put( "bool", Boolean.TRUE );     
       
     map.put( "int", new Integer(1) );     
     map.put( "arr", new String[]{"a","b"} );     
     map.put( "func", "function(i){ return this.arr[i]; }" );     
     JSONObject json = JSONObject.fromObject( map );     
     System.out.println( json );     
     //{"func":function(i){ return this.arr[i]; },"arr":["a","b"],"int":1,"name":"json","bool":true}
    

      

       


    3、BEAN

            

     JSONObject jsonObject = JSONObject.fromObject( new JsonBean() );       
       System.out.println( jsonObject );       
       //{"func1":function(i){ return this.options[i]; },"pojoId":1,"name":"json","options":["a","f"],"func2":function(i){ return this.options[i]; }}      
     
     
    JSONObject jsonObject = JSONObject.fromObject( new JsonBean() );     
    System.out.println( jsonObject );     
     //{"func1":function(i){ return this.options[i]; },"pojoId":1,"name":"json","options":["a","f"],"func2":function(i){ return this.options[i]; }}  
    

      


    4、BEANS

      

    List list = new ArrayList();    
            JsonBean2 jb1 = new JsonBean2();    
            jb1.setCol(1);    
            jb1.setRow(1);    
            jb1.setValue("xx");    
                
            JsonBean2 jb2 = new JsonBean2();    
            jb2.setCol(2);    
            jb2.setRow(2);    
            jb2.setValue("");    
                 
            list.add(jb1);    
            list.add(jb2);    
                
            JSONArray ja = JSONArray.fromObject(list);    
            System.out.println( ja.toString() );    
            //[{"value":"xx","row":1,"col":1},{"value":"","row":2,"col":2}]    
     
        
    List list = new ArrayList();  
            JsonBean2 jb1 = new JsonBean2();  
            jb1.setCol(1);  
            jb1.setRow(1);  
            jb1.setValue("xx");  
              
            JsonBean2 jb2 = new JsonBean2();  
            jb2.setCol(2);  
            jb2.setRow(2);  
            jb2.setValue("");  
              
              
            list.add(jb1);  
            list.add(jb2);  
              
            JSONArray ja = JSONArray.fromObject(list);  
            System.out.println( ja.toString() );  
            //[{"value":"xx","row":1,"col":1},{"value":"","row":2,"col":2}]   
    

      


    5、String to bean

          

    String json = "{name=\"json\",bool:true,int:1,double:2.2,func:function(a){ return a; },array:[1,2]}";       
       JSONObject jsonObject = JSONObject.fromString(json);       
       Object bean = JSONObject.toBean( jsonObject );       
         assertEquals( jsonObject.get( "name" ), PropertyUtils.getProperty( bean, "name" ) );       
         assertEquals( jsonObject.get( "bool" ), PropertyUtils.getProperty( bean, "bool" ) );       
         assertEquals( jsonObject.get( "int" ), PropertyUtils.getProperty( bean, "int" ) );       
         assertEquals( jsonObject.get( "double" ), PropertyUtils.getProperty( bean, "double" ) );       
         assertEquals( jsonObject.get( "func" ), PropertyUtils.getProperty( bean, "func" ) );       
         List expected = JSONArray.toList( jsonObject.getJSONArray( "array" ) );       
         assertEquals( expected, (List) PropertyUtils.getProperty( bean, "array" ) );      
     
    String json = "{name=\"json\",bool:true,int:1,double:2.2,func:function(a){ return a; },array:[1,2]}";     
    JSONObject jsonObject = JSONObject.fromString(json);     
    Object bean = JSONObject.toBean( jsonObject );     
      assertEquals( jsonObject.get( "name" ), PropertyUtils.getProperty( bean, "name" ) );     
      assertEquals( jsonObject.get( "bool" ), PropertyUtils.getProperty( bean, "bool" ) );     
      assertEquals( jsonObject.get( "int" ), PropertyUtils.getProperty( bean, "int" ) );     
      assertEquals( jsonObject.get( "double" ), PropertyUtils.getProperty( bean, "double" ) );     
      assertEquals( jsonObject.get( "func" ), PropertyUtils.getProperty( bean, "func" ) );     
      List expected = JSONArray.toList( jsonObject.getJSONArray( "array" ) );     
      assertEquals( expected, (List) PropertyUtils.getProperty( bean, "array" ) );   
    

      

     String json = "{\"value\":\"xx\",\"row\":1,\"col\":1}";       
      JSONObject jsonObject = JSONObject.fromString(json);    
      JsonBean2 bean = (JsonBean2) JSONObject.toBean( jsonObject, JsonBean2.class );       
          assertEquals( jsonObject.get( "col" ),new Integer( bean.getCol())  );       
          assertEquals( jsonObject.get( "row" ), new Integer( bean.getRow() ) );       
          assertEquals( jsonObject.get( "value" ), bean.getValue() );      
     
    String json = "{\"value\":\"xx\",\"row\":1,\"col\":1}";     
    JSONObject jsonObject = JSONObject.fromString(json);  
    JsonBean2 bean = (JsonBean2) JSONObject.toBean( jsonObject, JsonBean2.class );     
        assertEquals( jsonObject.get( "col" ),new Integer( bean.getCol())  );     
        assertEquals( jsonObject.get( "row" ), new Integer( bean.getRow() ) );     
        assertEquals( jsonObject.get( "value" ), bean.getValue() );    
    

      

     

    6  json to xml
    1)

    JSONObject json = new JSONObject( true );  

    String xml = XMLSerializer.write( json ); 

    < o class="object" null="true"> 

    2)

    JSONObject json = JSONObject.fromObject("{\"name\":\"json\",\"bool\":true,\"int\":1}");  

    String xml = XMLSerializer.write( json ); 

    < o class="object"> 

      < name type="string">json< /name> 

    <bool type="boolean">true< /bool>

    <int type="number">1< /int>< /o>

    <class="object">

    <name type="string">json< /name>

    <boo ltype="boolean">true< /bool>

    <int type="number">1< /int>

    < /o>

    3)

    1. JSONArray json = JSONArray.fromObject("[1,2,3]");  
    2. String xml = XMLSerializer.write( json ); 
    1. < a class="array"> 
    2.    < e type="number">1< /e> 
    3.    < e type="number">2< /e> 
    4.    < e type="number">3< /e> 
    5. < /a> 

    7 、xml to json

    1. < a class="array"> 
    2.   < e type="function" params="i,j"> 
    3.       return matrix[i][j];  
    4.   < /e> 
    5. < /a> 
    6.    < a class="array"> 
    7.      < e type="function" params="i,j"> 
    8.          return matrix[i][j];  
    9.      < /e> 
    10.    < /a> 
      1. JSONArray json = (JSONArray) XMLSerializer.read( xml );  
      2. System.out.println( json );  
      3. // prints [function(i,j){ return matrix[i][j]; }]   
  • 相关阅读:
    他人监控相关博客
    cassandra高级操作之JMX操作
    【原创】官方文档-hive 启动命令
    oracle必须启动的服务
    【官方文档】elasticsearch中的API
    Oracle 11g即时客户端在windows下的配置
    Oracle 使用SQL*Plus连接数据库
    Oracle 关闭数据库(未使用Oracle Restart)
    Oracle 启动实例(instance)、打开数据库
    Oracle win32_11gR2_database在Win7下的安装与卸载
  • 原文地址:https://www.cnblogs.com/xiaomimi/p/2835990.html
Copyright © 2020-2023  润新知