Java 与 Json互转

本文详细介绍了如何在Java中创建和操作JSON对象及数组,包括从头构建、字符串解析、集合转换、JavaBean映射等多种方式,并展示了如何排除特定属性。

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") );         
JSONObject jsonObject = new JSONObject() .element( "string", "JSON" ) .element( "integer", "1" ) .element( "double", "2.0" ) .element( "boolean", "true" ); assertEquals( "JSON", jsonObject.getString("string") ); assertEquals( 1, jsonObject.getInt("integer") ); assertEquals( 2.0d, jsonObject.getDouble("double"), 0d ); 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") );         
String str = "{'string':'JSON', 'integer': 1, 'double': 2.0, 'boolean': true}"; JSONObject jsonObject = (JSONObject) JSONSerializer.toJSON( str ); assertEquals( "JSON", jsonObject.getString("string") ); assertEquals( 1, jsonObject.getInt("integer") ); assertEquals( 2.0d, jsonObject.getDouble("double"), 0d ); 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") );         
Map map = new HashMap(); map.put( "string", "JSON" ); map.put( "integer", "1" ); map.put( "double", "2.0" ); map.put( "boolean", "true" ); JSONObject jsonObject = (JSONObject) JSONSerializer.toJSON( map ); assertEquals( "JSON", jsonObject.getString("string") ); assertEquals( 1, jsonObject.getInt("integer") ); assertEquals( 2.0d, jsonObject.getDouble("double"), 0d ); 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") );         
public class MyJavaBean { private String string; private int integer; private double dooble; private boolean bool; // getters & setters } MyJavaBean bean = new MyJavaBean(); bean.setString( "JSON" ); bean.setInteger( 1 ); bean.setDooble( 2.0d ); bean.setBool( true ); JSONObject jsonObject = (JSONObject) JSONSerializer.toJSON( bean ); assertEquals( "JSON", jsonObject.getString("string") ); assertEquals( 1, jsonObject.getInt("integer") ); assertEquals( 2.0d, jsonObject.getDouble("dooble"), 0d ); 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) );         
JSONArray jsonArray = new JSONArray() .element( "JSON" ) .element( "1" ) .element( "2.0" ) .element( "true" ); assertEquals( "JSON", jsonArray.getString(0) ); assertEquals( 1, jsonArray.getInt(1) ); assertEquals( 2.0d, jsonArray.getDouble(2), 0d ); 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) );         
String str = "['JSON', 1, 2.0, true]"; JSONArray jsonArray = (JSONArray) JSONSerializer.toJSON( str ); assertEquals( "JSON", jsonArray.getString(0) ); assertEquals( 1, jsonArray.getInt(1) ); assertEquals( 2.0d, jsonArray.getDouble(2), 0d ); 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) );         
List list = new ArrayList(); list.add( "JSON" ); list.add( "1" ); list.add( "2.0" ); list.add( "true" ); JSONArray jsonArray = (JSONArray) JSONSerializer.toJSON( list ); assertEquals( "JSON", jsonArray.getString(0) ); assertEquals( 1, jsonArray.getInt(1) ); assertEquals( 2.0d, jsonArray.getDouble(2), 0d ); 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) );         
Object[] array = new Object[]{ "JSON", "1", "2.0", "true" }; JSONArray jsonArray = (JSONArray) JSONSerializer.toJSON( array ); assertEquals( "JSON", jsonArray.getString(0) ); assertEquals( 1, jsonArray.getInt(1) ); assertEquals( 2.0d, jsonArray.getDouble(2), 0d ); 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() );   
String str = "{'func': function( param ){ doSomethingWithParam(param); }}"; JSONObject jsonObject = (JSONObject) JSONSerializer.toJSON( str ); JSONFunction func = (JSONFunction) jsonObject.get("func"); ArrayAssertions.assertEquals( new String[]{"param"}, func.getParams() ); 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") );      
String str = "{'string':'JSON', 'integer': 1, 'double': 2.0, 'boolean': true}"; JsonConfig jsonConfig = new JsonConfig(); jsonConfig.setExcludes( new String[]{ "double", "boolean" } ); JSONObject jsonObject = (JSONObject) JSONSerializer.toJSON( str, jsonConfig ); assertEquals( "JSON", jsonObject.getString("string") ); assertEquals( 1, jsonObject.getInt("integer") ); assertFalse( jsonObject.has("double") ); 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") );      
String str = "{'string':'JSON', 'integer': 1, 'double': 2.0, 'boolean': true}"; JsonConfig jsonConfig = new JsonConfig(); jsonConfig.setJsonPropertyFilter( new PropertyFilter(){ public boolean apply( Object source, String name, Object value ) { if( "double".equals(value) || "boolean".equals(value) ){ return true; } return false; } }); JSONObject jsonObject = (JSONObject) JSONSerializer.toJSON( str, jsonConfig ); assertEquals( "JSON", jsonObject.getString("string") ); assertEquals( 1, jsonObject.getInt("integer") ); assertFalse( jsonObject.has("double") ); 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") );      
String str = "{'string':'JSON', 'integer': 1, 'double': 2.0, 'boolean': true}"; JSONObject jsonObject = (JSONObject) JSONSerializer.toJSON( str ); DynaBean bean = (DynaBean) JSONSerializer.toJava( jsonObject ); assertEquals( "JSON", bean.get("string") ); assertEquals( new Integer(1), bean.get("integer") ); assertEquals( new Double(2.0), bean.get("double") ); 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() );   
public class MyJavaBean { private String string; private int integer; private double dooble; private boolean bool; // getters & setters } MyJavaBean bean = new MyJavaBean(); bean.setString( "JSON" ); bean.setInteger( 1 ); bean.setDooble( 2.0d ); bean.setBool( true ); JSONObject jsonObject = (JSONObject) JSONSerializer.toJSON( bean ); JsonConfig jsonConfig = new JsonConfig(); jsonConfig.setRootClass( MyJavaBean.class ); MyJavaBean bean2 = (MyJavaBean) JSONSerializer.toJava( jsonObject, jsonConfig ); assertNotNull( bean2 ); assertEquals( "JSON", bean2.getString() ); assertEquals( 1, bean2.getInteger() ); assertEquals( 2.0d, bean2.getDooble(), 0d ); 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 );   
List input = new ArrayList(); input.add( "JSON" ); input.add( "1" ); input.add( "2.0" ); input.add( "true" ); JSONArray jsonArray = (JSONArray) JSONSerializer.toJSON( input ); List output = (List) JSONSerializer.toJava( jsonArray ); 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);   
List input = new ArrayList(); input.add( "JSON" ); input.add( "1" ); input.add( "2.0" ); input.add( "true" ); JSONArray jsonArray = (JSONArray) JSONSerializer.toJSON( input ); JsonConfig jsonConfig = new JsonConfig(); jsonConfig.setArrayMode( JsonConfig.MODE_OBJECT_ARRAY ); Object[] output = (Object[]) JSONSerializer.toJava( jsonArray, jsonConfig ); Object[] expected = new Object[]{ "JSON", "1", "2.0", "true" }; 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);   
List input = new ArrayList(); input.add( "1" ); input.add( "2" ); input.add( "3.0" ); JSONArray jsonArray = (JSONArray) JSONSerializer.toJSON( input ); JsonConfig jsonConfig = new JsonConfig(); jsonConfig.setArrayMode( JsonConfig.MODE_OBJECT_ARRAY ); jsonConfig.setRootClass( Integer.TYPE ); int[] output = (int[]) JSONSerializer.toJava( jsonArray, jsonConfig ); int[] expected = new int[]{ 1, 2, 3 }; 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() );
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值