json与java互转(二)

来源:互联网 发布:sap hana 大数据 编辑:程序博客网 时间:2024/05/16 06:05

From Java to JSON

Creating a JSONObject from scratch

  1. JSONObject jsonObject = new JSONObject()   
  2.                               .element( "string""JSON" )   
  3.                               .element( "integer""1" )   
  4.                               .element( "double""2.0" )   
  5.                               .element( "boolean""true" );   
  6. assertEquals( "JSON", jsonObject.getString("string") );         
  7. assertEquals( 1, jsonObject.getInt("integer") );         
  8. assertEquals( 2.0d, jsonObject.getDouble("double"), 0d );         
  9. assertTrue( jsonObject.getBoolean("boolean") );         

Creating a JSONObject from a JSON formatted string

  1. String str = "{'string':'JSON', 'integer': 1, 'double': 2.0, 'boolean': true}";   
  2. JSONObject jsonObject = (JSONObject) JSONSerializer.toJSON( str );   
  3. assertEquals( "JSON", jsonObject.getString("string") );         
  4. assertEquals( 1, jsonObject.getInt("integer") );         
  5. assertEquals( 2.0d, jsonObject.getDouble("double"), 0d );         
  6. assertTrue( jsonObject.getBoolean("boolean") );         

Creating a JSONObject from a Map

  1. Map map = new HashMap();   
  2. map.put( "string""JSON" );   
  3. map.put( "integer""1" );   
  4. map.put( "double""2.0" );   
  5. map.put( "boolean""true" );   
  6. JSONObject jsonObject = (JSONObject) JSONSerializer.toJSON( map );   
  7. assertEquals( "JSON", jsonObject.getString("string") );         
  8. assertEquals( 1, jsonObject.getInt("integer") );         
  9. assertEquals( 2.0d, jsonObject.getDouble("double"), 0d );         
  10. assertTrue( jsonObject.getBoolean("boolean") );         

Creating a JSONObject from a JavaBean

  1. public class MyJavaBean {   
  2.    private String string;   
  3.    private int integer;   
  4.    private double dooble;   
  5.    private boolean bool;   
  6.   
  7.    // getters & setters   
  8. }   
  9.   
  10. MyJavaBean bean = new MyJavaBean();   
  11. bean.setString( "JSON" );   
  12. bean.setInteger( 1 );   
  13. bean.setDooble( 2.0d );   
  14. bean.setBool( true );   
  15. JSONObject jsonObject = (JSONObject) JSONSerializer.toJSON( bean );   
  16. assertEquals( "JSON", jsonObject.getString("string") );         
  17. assertEquals( 1, jsonObject.getInt("integer") );         
  18. assertEquals( 2.0d, jsonObject.getDouble("dooble"), 0d );         
  19. assertTrue( jsonObject.getBoolean("bool") );         

Creating a JSONArray from scratch

  1. JSONArray jsonArray = new JSONArray()   
  2.                               .element( "JSON" )   
  3.                               .element( "1" )   
  4.                               .element( "2.0" )   
  5.                               .element( "true" );   
  6. assertEquals( "JSON", jsonArray.getString(0) );         
  7. assertEquals( 1, jsonArray.getInt(1) );         
  8. assertEquals( 2.0d, jsonArray.getDouble(2), 0d );         
  9. assertTrue( jsonArray.getBoolean(3) );         

Creating a JSONArray from a JSON formatted string

  1. String str = "['JSON', 1, 2.0, true]";   
  2. JSONArray jsonArray = (JSONArray) JSONSerializer.toJSON( str );   
  3. assertEquals( "JSON", jsonArray.getString(0) );         
  4. assertEquals( 1, jsonArray.getInt(1) );         
  5. assertEquals( 2.0d, jsonArray.getDouble(2), 0d );         
  6. assertTrue( jsonArray.getBoolean(3) );         

Creating a JSONArray from a Collection

  1. List list = new ArrayList();   
  2. list.add( "JSON" );   
  3. list.add( "1" );   
  4. list.add( "2.0" );   
  5. list.add( "true" );   
  6. JSONArray jsonArray = (JSONArray) JSONSerializer.toJSON( list );   
  7. assertEquals( "JSON", jsonArray.getString(0) );         
  8. assertEquals( 1, jsonArray.getInt(1) );         
  9. assertEquals( 2.0d, jsonArray.getDouble(2), 0d );         
  10. assertTrue( jsonArray.getBoolean(3) );         

Creating a JSONArray from an array

  1. Object[] array = new Object[]{ "JSON""1""2.0""true" };   
  2. JSONArray jsonArray = (JSONArray) JSONSerializer.toJSON( array );   
  3. assertEquals( "JSON", jsonArray.getString(0) );         
  4. assertEquals( 1, jsonArray.getInt(1) );         
  5. assertEquals( 2.0d, jsonArray.getDouble(2), 0d );         
  6. assertTrue( jsonArray.getBoolean(3) );         

JavaScript functions

  1. String str = "{'func': function( param ){ doSomethingWithParam(param); }}";   
  2. JSONObject jsonObject = (JSONObject) JSONSerializer.toJSON( str );   
  3. JSONFunction func = (JSONFunction) jsonObject.get("func");   
  4. ArrayAssertions.assertEquals( new String[]{"param"}, func.getParams() );   
  5. assertEquals( "doSomethingWithParam(param);", func.getText() );   

Exclude properties

  1. String str = "{'string':'JSON', 'integer': 1, 'double': 2.0, 'boolean': true}";   
  2. JsonConfig jsonConfig = new JsonConfig();   
  3. jsonConfig.setExcludes( new String[]{ "double""boolean" } );   
  4. JSONObject jsonObject = (JSONObject) JSONSerializer.toJSON( str, jsonConfig );   
  5. assertEquals( "JSON", jsonObject.getString("string") );         
  6. assertEquals( 1, jsonObject.getInt("integer") );         
  7. assertFalse( jsonObject.has("double") );      
  8. assertFalse( jsonObject.has("boolean") );      

Exclude properties (with filters)

  1. String str = "{'string':'JSON', 'integer': 1, 'double': 2.0, 'boolean': true}";   
  2. JsonConfig jsonConfig = new JsonConfig();   
  3. jsonConfig.setJsonPropertyFilter( new PropertyFilter(){     
  4.    public boolean apply( Object source, String name, Object value ) {     
  5.       if"double".equals(value) || "boolean".equals(value) ){     
  6.          return true;     
  7.       }     
  8.       return false;     
  9.    }     
  10. });     
  11. JSONObject jsonObject = (JSONObject) JSONSerializer.toJSON( str, jsonConfig );   
  12. assertEquals( "JSON", jsonObject.getString("string") );         
  13. assertEquals( 1, jsonObject.getInt("integer") );         
  14. assertFalse( jsonObject.has("double") );      
  15. assertFalse( jsonObject.has("boolean") );      

From JSON to Java

JSONObject to DynaBean

  1. String str = "{'string':'JSON', 'integer': 1, 'double': 2.0, 'boolean': true}";   
  2. JSONObject jsonObject = (JSONObject) JSONSerializer.toJSON( str );   
  3. DynaBean bean = (DynaBean) JSONSerializer.toJava( jsonObject );   
  4. assertEquals( "JSON", bean.get("string") );         
  5. assertEquals( new Integer(1), bean.get("integer") );         
  6. assertEquals( new Double(2.0), bean.get("double") );         
  7. assertEquals( Boolean.TRUE, bean.get("boolean") );      

JSONObject to JavaBean

  1. public class MyJavaBean {   
  2.    private String string;   
  3.    private int integer;   
  4.    private double dooble;   
  5.    private boolean bool;   
  6.   
  7.    // getters & setters   
  8. }   
  9.   
  10. MyJavaBean bean = new MyJavaBean();   
  11. bean.setString( "JSON" );   
  12. bean.setInteger( 1 );   
  13. bean.setDooble( 2.0d );   
  14. bean.setBool( true );   
  15. JSONObject jsonObject = (JSONObject) JSONSerializer.toJSON( bean );   
  16. JsonConfig jsonConfig = new JsonConfig();   
  17. jsonConfig.setRootClass( MyJavaBean.class );   
  18. MyJavaBean bean2 = (MyJavaBean) JSONSerializer.toJava( jsonObject, jsonConfig );   
  19. assertNotNull( bean2 );   
  20. assertEquals( "JSON", bean2.getString() );   
  21. assertEquals( 1, bean2.getInteger() );   
  22. assertEquals( 2.0d, bean2.getDooble(), 0d );   
  23. assertTrue( bean2.getBool() );   

JSONArray to List

  1. List input = new ArrayList();   
  2. input.add( "JSON" );   
  3. input.add( "1" );   
  4. input.add( "2.0" );   
  5. input.add( "true" );   
  6. JSONArray jsonArray = (JSONArray) JSONSerializer.toJSON( input );   
  7. List output = (List) JSONSerializer.toJava( jsonArray );   
  8. ArrayAssertions.assertEquals( input, output );   

JSONArray to array

  1. List input = new ArrayList();   
  2. input.add( "JSON" );   
  3. input.add( "1" );   
  4. input.add( "2.0" );   
  5. input.add( "true" );   
  6. JSONArray jsonArray = (JSONArray) JSONSerializer.toJSON( input );   
  7. JsonConfig jsonConfig = new JsonConfig();   
  8. jsonConfig.setArrayMode( JsonConfig.MODE_OBJECT_ARRAY );   
  9. Object[] output = (Object[]) JSONSerializer.toJava( jsonArray, jsonConfig );   
  10. Object[] expected = new Object[]{ "JSON""1""2.0""true" };   
  11. ArrayAssertions.assertEquals( expected, output);   

JSONArray to array (type conversion)

  1. List input = new ArrayList();   
  2. input.add( "1" );   
  3. input.add( "2" );   
  4. input.add( "3.0" );   
  5. JSONArray jsonArray = (JSONArray) JSONSerializer.toJSON( input );   
  6. JsonConfig jsonConfig = new JsonConfig();   
  7. jsonConfig.setArrayMode( JsonConfig.MODE_OBJECT_ARRAY );   
  8. jsonConfig.setRootClass( Integer.TYPE );   
  9. int[] output = (int[]) JSONSerializer.toJava( jsonArray, jsonConfig );   
  10. int[] expected = new int[]{ 123 };   
  11. ArrayAssertions.assertEquals( expected, output);   
JSONObject to JavaBean, exclude properties with filters
  1. public class MyJavaBean {   
  2.    private String string;   
  3.    private int integer;   
  4.    private double dooble = 0d;   
  5.    private boolean bool;   
  6.   
  7.    // getters & setters   
  8. }   
  9.   
  10. MyJavaBean bean = new MyJavaBean();   
  11. bean.setString( "JSON" );   
  12. bean.setInteger( 1 );   
  13. bean.setDooble( 2.0d );   
  14. bean.setBool( true );   
  15. JSONObject jsonObject = (JSONObject) JSONSerializer.toJSON( bean );   
  16. JsonConfig jsonConfig = new JsonConfig();   
  17. jsonConfig.setRootClass( MyJavaBean.class );   
  18. jsonConfig.setJavaPropertyFilter( new PropertyFilter(){     
  19.    public boolean apply( Object source, String name, Object value ) {     
  20.       if"bool".equals( name ) || "dooble".equals( name ) ){     
  21.          return true;     
  22.       }     
  23.       return false;     
  24.    }     
  25. });    
  26. MyJavaBean bean2 = (MyJavaBean) JSONSerializer.toJava( jsonObject, jsonConfig );   
  27. assertNotNull( bean2 );   
  28. assertEquals( "JSON", bean2.getString() );   
  29. assertEquals( 1, bean2.getInteger() );   
  30. assertEquals( 0d, bean2.getDooble(), 0d );   
  31. assertFalse( bean2.getBool() );   

From JSON to XML

JSONObject to XML

  1. String str = "{'name':'JSON','integer':1,'double':2.0,'boolean':true,'nested':{'id':42},'array':[1,2,3]}";   
  2. JSON json = JSONSerializer.toJSON( str );   
  3. XMLSerializer xmlSerializer = new XMLSerializer();   
  4. String xml = xmlSerializer.write( json );   
  5. System.out.println(xml);   
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <o>  
  3.    <boolean type="boolean">true</boolean>  
  4.    <double type="number">2.0</double>  
  5.    <integer type="number">1</integer>  
  6.    <name type="string">JSON</name>  
  7.    <nested class="object">  
  8.       <id type="number">42</id>  
  9.    </nested>  
  10.    <array class="array">  
  11.       <e type="number">1</e>  
  12.       <e type="number">2</e>  
  13.       <e type="number">3</e>  
  14.    </array>  
  15. </o>  
JSONObject to XML (no type hints)
  1. String str = "{'name':'JSON','integer':1,'double':2.0,'boolean':true,'nested':{'id':42},'array':[1,2,3]}";   
  2. JSON json = JSONSerializer.toJSON( str );   
  3. XMLSerializer xmlSerializer = new XMLSerializer();   
  4. xmlSerializer.setTypeHintsEnabled( false );   
  5. String xml = xmlSerializer.write( json );   
  6. System.out.println(xml);   
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <o>  
  3.    <boolean>true</boolean>  
  4.    <double>2.0</double>  
  5.    <integer>1</integer>  
  6.    <name>JSON</name>  
  7.    <nested>  
  8.       <id>42</id>  
  9.    </nested>  
  10.    <array>  
  11.       <e>1</e>  
  12.       <e>2</e>  
  13.       <e>3</e>  
  14.    </nested>  
  15. </o>  
JSONObject to XML (with json prefix)
  1. String str = "{'name':'JSON','integer':1,'double':2.0,'boolean':true,'nested':{'id':42},'array':[1,2,3]}";   
  2. JSON json = JSONSerializer.toJSON( str );   
  3. XMLSerializer xmlSerializer = new XMLSerializer();   
  4. xmlSerializer.setTypeHintsCompatibility( false );   
  5. String xml = xmlSerializer.write( json );   
  6. System.out.println(xml);   
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <o>  
  3.    <boolean json_type="boolean">true</boolean>  
  4.    <double json_type="number">2.0</double>  
  5.    <integer json_type="number">1</integer>  
  6.    <name json_type="string">JSON</name>  
  7.    <nested json_class="object">  
  8.       <id json_type="number">42</id>  
  9.    </nested>  
  10.    <array json_class="array">  
  11.       <e json_type="number">1</e>  
  12.       <e json_type="number">2</e>  
  13.       <e json_type="number">3</e>  
  14.    </array>  
  15. </o>  

JSONObject to XML (change node names)

  1. String str = "{'name':'JSON','integer':1,'double':2.0,'boolean':true,'nested':{'id':42},'array':[1,2,3]}";   
  2. JSON json = JSONSerializer.toJSON( str );   
  3. XMLSerializer xmlSerializer = new XMLSerializer();   
  4. xmlSerializer.setRootName( "root" );   
  5. xmlSerializer.setElementName( "element" );   
  6. String xml = xmlSerializer.write( json );   
  7. System.out.println(xml);   
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <root>  
  3.    <boolean type="boolean">true</boolean>  
  4.    <double type="number">2.0</double>  
  5.    <integer type="number">1</integer>  
  6.    <name type="string">JSON</name>  
  7.    <nested class="object">  
  8.       <id type="number">42</id>  
  9.    </nested>  
  10.    <array class="array">  
  11.       <element type="number">1</e>  
  12.       <element type="number">2</e>  
  13.       <element type="number">3</e>  
  14.    </array>  
  15. </root>  

JSONArray to XML

  1. String str = "['JSON', 1, 2.0, true, {'id':42}, [1,2,3]]";   
  2. JSON json = JSONSerializer.toJSON( str );   
  3. XMLSerializer xmlSerializer = new XMLSerializer();   
  4. String xml = xmlSerializer.write( json );   
  5. System.out.println(xml);   
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <a>  
  3.    <e type="string">JSON</e>  
  4.    <e type="number">1</e>  
  5.    <e type="number">2.0</e>  
  6.    <e type="boolean">true</e>  
  7.    <e class="object">  
  8.       <id type="number">42</id>  
  9.    </e>  
  10.    <e class="array">  
  11.       <e type="number">1</e>  
  12.       <e type="number">2</e>  
  13.       <e type="number">3</e>  
  14.    </e>  
  15. </a>  
JSONArray to XML (no type hints)
  1. String str = "['JSON', 1, 2.0, true, {'id':42}, [1,2,3]]";   
  2. JSON json = JSONSerializer.toJSON( str );   
  3. XMLSerializer xmlSerializer = new XMLSerializer();   
  4. xmlSerializer.setTypeHintsEnabled( false );   
  5. String xml = xmlSerializer.write( json );   
  6. System.out.println(xml);   
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <a>  
  3.    <e>JSON</e>  
  4.    <e>1</e>  
  5.    <e>2.0</e>  
  6.    <e>true</e>  
  7.    <e>  
  8.       <id>42</id>  
  9.    </e>  
  10.    <e>  
  11.       <e>1</e>  
  12.       <e>2</e>  
  13.       <e>3</e>  
  14.    </e>  
  15. </a>  
JSONArray to XML (with json prefix)
  1. String str = "['JSON', 1, 2.0, true, {'id':42}, [1,2,3]]";   
  2. JSON json = JSONSerializer.toJSON( str );   
  3. XMLSerializer xmlSerializer = new XMLSerializer();   
  4. xmlSerializer.setTypeHintsCompatibility( false );   
  5. String xml = xmlSerializer.write( json );   
  6. System.out.println(xml);   
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <a>  
  3.    <e json_type="string">JSON</e>  
  4.    <e json_type="number">1</e>  
  5.    <e json_type="number">2.0</e>  
  6.    <e json_type="boolean">true</e>  
  7.    <e json_class="object">  
  8.       <id json_type="number">42</id>  
  9.    </e>  
  10.    <e json_class="array">  
  11.       <e json_type="number">1</e>  
  12.       <e json_type="number">2</e>  
  13.       <e json_type="number">3</e>  
  14.    </e>  
  15. </a>  

Flatten JSONArray into parent

  1. String str = "{'number': [1,2,3]}";   
  2. JSONObject json = (JSONObject) JSONSerializer.toJSON( str );   
  3. XMLSerializer xmlSerializer = new XMLSerializer();   
  4. xmlSerializer.setTypeHintsEnabled( false );   
  5. String xml = xmlSerializer.write( json );   
  6. System.out.println( xml );   
  7. json.getJSONArray( "number" ).setExpandElements( true );   
  8. xml = xmlSerializer.write( json );   
  9. System.out.println( xml );   
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <o>  
  3.    <number>  
  4.       <e>1</e>  
  5.       <e>2</e>  
  6.       <e>3</e>  
  7.    </number>  
  8. </o>  
  9.   
  10. <?xml version="1.0" encoding="UTF-8"?>  
  11. <o>  
  12.    <number>1</number>  
  13.    <number>2</number>  
  14.    <number>3</number>  
  15. </o>  

From XML to JSON

XML to JSONObject

  1. <o number="1">  
  2.    first   
  3.    <string>json</string>  
  4.    <array>  
  5.       <e>1</e>  
  6.       <e>true</e>  
  7.    </array>  
  8. </o>  
  1. String xml = ...   
  2. XMLSerializer xmlSerializer = new XMLSerializer();   
  3. JSON json = xmlSerializer.read( xml );   
  4. System.out.println( json.toString(2) );   
  1. {   
  2.   "string""json",   
  3.   "#text""first",   
  4.   "array":   [   
  5.     "1",   
  6.     "true"  
  7.   ],   
  8.   "@number""1"  
  9. }   
原创粉丝点击