comparison src/luan/Luan.java @ 1802:ca98dee04e08 default tip

add Parsers.json_null
author Franklin Schmidt <fschmidt@gmail.com>
date Sun, 21 Apr 2024 21:25:15 -0600
parents 8df0b80e715e
children
comparison
equal deleted inserted replaced
1801:32e77b071e09 1802:ca98dee04e08
421 throws LuanException 421 throws LuanException
422 { 422 {
423 return load(text,sourceName,persist,null); 423 return load(text,sourceName,persist,null);
424 } 424 }
425 425
426 public static Object toJava(Object obj) throws LuanException { 426 public static Object toJava(Object obj,Object nullValue) throws LuanException {
427 if( obj == nullValue )
428 return null;
427 if( !(obj instanceof LuanTable) ) 429 if( !(obj instanceof LuanTable) )
428 return obj; 430 return obj;
429 LuanTable tbl = (LuanTable)obj; 431 LuanTable tbl = (LuanTable)obj;
430 if( !tbl.isMap() ) { 432 if( !tbl.isMap() ) {
431 List list = new ArrayList(); 433 List list = new ArrayList();
432 for( Object el : tbl.asList() ) { 434 for( Object el : tbl.asList() ) {
433 list.add( toJava(el) ); 435 list.add( toJava(el,nullValue) );
434 } 436 }
435 return list; 437 return list;
436 } else { 438 } else {
437 Map map = new LinkedHashMap(); 439 Map map = new LinkedHashMap();
438 Iterator<Map.Entry> iter = tbl.rawIterator(); 440 Iterator<Map.Entry> iter = tbl.rawIterator();
439 while( iter.hasNext() ) { 441 while( iter.hasNext() ) {
440 Map.Entry entry = iter.next(); 442 Map.Entry entry = iter.next();
441 map.put( toJava(entry.getKey()), toJava(entry.getValue()) ); 443 map.put( toJava(entry.getKey(),nullValue), toJava(entry.getValue(),nullValue) );
442 } 444 }
443 return map; 445 return map;
444 } 446 }
445 } 447 }
446 448