• JSON


    JSON

    [资料http://www.w3school.com.cn/json/index.asp]

    概念:JavaScript 对象表示法(JavaScript Object Notation), 是轻量级的文本数据交换格式。

    特点:JSON 文本格式在语法上与创建 JavaScript 对象的代码相同(JSON 使用 JavaScript 语法来描述数据对象)。由于这种相似性,无需解析器,JavaScript 程序能够使用内建的eval()函数,用 JSON 数据来生成原生的 JavaScript对象..JSON 解析器和 JSON 库支持许多不同的编程语言。

    使用

    JSON 语法是 JavaScript 对象表示法语法的子集。

      数据在名称/值对中

      数据由逗号分隔

      花括号保存对象

      方括号保存数组

    JSON 值可以是:

      数字(整数或浮点数)

      字符串(在双引号或单引号中)

      逻辑值(true 或 false)

      数组(在方括号中)

      对象(在花括号中)

      null

    示例

    下面是javaScript对象的例子:

    var empObj={"employees": [
      { "firstName":"John" , "lastName":"Doe" },
      { "firstName":"Anna" , "lastName":"Smith" },
      { "firstName":"Peter" , "lastName":"Jones" }
    ]}

    取值:var name=employees[0].lastName;

    赋值:employees[0].lastName="Lyc";

     

    我们从服务器传来的数据经常是这样的:

    var empStr="{'employees': [
      { 'firstName':'John' , 'lastName':'Doe' },
      { 'firstName':'Anna' , 'lastName':'Smith' },
      { 'firstName':'Peter' , 'lastName':'Jones' }
    ]}";

    注意这是一个字符串,javaScript是不能解析的。

    JavaScript 函数 eval() 可用于将 JSON 文本转换为 JavaScript 对象。

    eval() 函数使用的是 JavaScript 编译器,可解析 JSON 文本,然后生成 JavaScript 对象。必须把文本包围在括号中,这样才能避免语法错误:

    var empObj = eval ("(" + empStr + ")");

    var empStr= empObj.toJSONString();

     

    以下方式需要到js,或者有些浏览器不支持,或需要jar包,暂时不用。

    目前的用法是,在JAVA拼接JSON格式的字符串,那么JS的解析就会方便很多。

    问题:以前用junit调试时,页面提交过来的json貌似类似{"":""},有很多双引号,不能用啊。解决方法:1、有方法在json和string之间转换,2、手动解决3、有封装的方法直接取值。

    ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

    JSON和JS对象的转换:

    1、用eval()函数(可以编译执行任何JavaScript程序,因此产生了安全性问题)

    2、JSON解释器 JSON.parse、JSON.stringify(有些浏览器不支持)

    3、引入脚本json2.js,JSON.parse 函数将JSON文本转换为对象。

     

    JSON与JAVA的转换:

    下载地址:http://json-lib.sourceforge.net/
    还要需要的第3方包:
    org.apache.commons(3.2以上版本)
    org.apache.oro
    net.sf.ezmorph(ezmorph-1.0.4.jar)
    nu.xom

    1、List

    Java代码
    1. boolean[] boolArray = newboolean[]{true,false,true};      
    2.             JSONArray jsonArray1 = JSONArray.fromObject( boolArray );      
    3.             System.out.println( jsonArray1 );      
    4.            // prints [true,false,true]     
    5.               
    6.             List list = new ArrayList();      
    7.             list.add( "first" );      
    8.             list.add( "second" );      
    9.             JSONArray jsonArray2 = JSONArray.fromObject( list );      
    10.             System.out.println( jsonArray2 );      
    11.            // prints ["first","second"]     
    12.   
    13.             JSONArray jsonArray3 = JSONArray.fromObject( "['json','is','easy']" );      
    14.             System.out.println( jsonArray3 );      
    15.            // 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

    Java代码
    1. Map map = new HashMap();      
    2.           map.put( "name", "json" );      
    3.           map.put( "bool", Boolean.TRUE );      
    4.             
    5.           map.put( "int", new Integer(1) );      
    6.           map.put( "arr", new String[]{"a","b"} );      
    7.           map.put( "func", "function(i){ return this.arr[i]; }" );      
    8.           JSONObject json = JSONObject.fromObject( map );      
    9.           System.out.println( json );      
    10.          //{"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

    Java代码
    1. /**
    2.       * Bean.java
    3.          private String name = "json";   
    4.          private int pojoId = 1;   
    5.          private char[] options = new char[]{'a','f'};   
    6.          private String func1 = "function(i){ return this.options[i]; }";   
    7.          private JSONFunction func2 = new JSONFunction(new String[]{"i"},"return this.options[i];");
    8.      */   
    9. JSONObject jsonObject = JSONObject.fromObject( new JsonBean() );      
    10. System.out.println( jsonObject );      
    11. //{"func1":function(i){ return this.options[i]; },"pojoId":1,"name":"json","options":["a","f"],"func2":function(i){ return this.options[i]; }}    
    /**
    * Bean.java
    private String name = "json";
    private int pojoId = 1;
    private char[] options = new char[]{'a','f'};
    private String func1 = "function(i){ return this.options[i]; }";
    private JSONFunction func2 = new JSONFunction(new String[]{"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

    Java代码
    1. /**
    2.        * private int row ;
    3.            private int col ;
    4.            private String value ;
    5.        *
    6.        */  
    7. List list = new ArrayList();   
    8.           JsonBean2 jb1 = new JsonBean2();   
    9.           jb1.setCol(1);   
    10.           jb1.setRow(1);   
    11.           jb1.setValue("xx");   
    12.             
    13.           JsonBean2 jb2 = new JsonBean2();   
    14.           jb2.setCol(2);   
    15.           jb2.setRow(2);   
    16.           jb2.setValue("");   
    17.             
    18.             
    19.           list.add(jb1);   
    20.           list.add(jb2);   
    21.             
    22.           JSONArray ja = JSONArray.fromObject(list);   
    23.           System.out.println( ja.toString() );   
    24.          //[{"value":"xx","row":1,"col":1},{"value":"","row":2,"col":2}]  
    /**
    * private int row ;
    private int col ;
    private String value ;
    *
    */
    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

    Java代码
    1. String json = "{name=\"json\",bool:true,int:1,double:2.2,func:function(a){ return a; },array:[1,2]}";      
    2. JSONObject jsonObject = JSONObject.fromString(json);      
    3. Object bean = JSONObject.toBean( jsonObject );      
    4. assertEquals( jsonObject.get( "name" ), PropertyUtils.getProperty( bean, "name" ) );      
    5.    assertEquals( jsonObject.get( "bool" ), PropertyUtils.getProperty( bean, "bool" ) );      
    6.    assertEquals( jsonObject.get( "int" ), PropertyUtils.getProperty( bean, "int" ) );      
    7.     assertEquals( jsonObject.get( "double" ), PropertyUtils.getProperty( bean, "double" ) );      
    8.     assertEquals( jsonObject.get( "func" ), PropertyUtils.getProperty( bean, "func" ) );      
    9.    List expected = JSONArray.toList( jsonObject.getJSONArray( "array" ) );      
    10.    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" ) );



    Java代码
    1. String json = "{\"value\":\"xx\",\"row\":1,\"col\":1}";      
    2. JSONObject jsonObject = JSONObject.fromString(json);   
    3.    JsonBean2 bean = (JsonBean2) JSONObject.toBean( jsonObject, JsonBean2.class );      
    4.     assertEquals( jsonObject.get( "col" ),new Integer( bean.getCol())   );      
    5.       assertEquals( jsonObject.get( "row" ), new Integer( bean.getRow() ) );      
    6.       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>
    <o class="object">
    <name type="string">json</name>
    <bool type="boolean">true</bool>
    <int type="number">1</int>
    </o>
    3)
    JSONArray json = JSONArray.fromObject("[1,2,3]");
    String xml = XMLSerializer.write( json );
    <a class="array">
    <e type="number">1</e>
    <e type="number">2</e>
    <e type="number">3</e>
    </a>

    7 、xml to json
    <a class="array">
    <e type="function" params="i,j">
    return matrix[i][j];
    </e>
    </a>
    <a class="array">
    <e type="function" params="i,j">
    return matrix[i][j];
    </e>
    </a>

    JSONArray json = (JSONArray) XMLSerializer.read( xml );
    System.out.println( json );
    // prints [function(i,j){ return matrix[i][j]; }]

  • 相关阅读:
    Java实现 LeetCode 792 自定义字符串排序(暴力)
    Java实现 LeetCode 792 自定义字符串排序(暴力)
    asp.net session对象的持久化
    Java实现 LeetCode 791 自定义字符串排序(桶排序)
    Java实现 LeetCode 791 自定义字符串排序(桶排序)
    Java实现 LeetCode 791 自定义字符串排序(桶排序)
    Java实现 LeetCode 790 多米诺和托米诺平铺(递推)
    Java实现 LeetCode 790 多米诺和托米诺平铺(递推)
    Java实现 LeetCode 790 多米诺和托米诺平铺(递推)
    小白也能看懂的约瑟夫环问题
  • 原文地址:https://www.cnblogs.com/wangjianbg/p/2688903.html
Copyright © 2020-2023  润新知