@Override public void openStartElement(XPathFragment xPathFragment, NamespaceResolver namespaceResolver) { super.openStartElement(xPathFragment, namespaceResolver); if(position != null){ T newLevel = createNewLevel(false, position); if(isLastEventStart){ //this means 2 startevents in a row so the last this is a complex object setComplex(position, true); } String keyName = getKeyName(xPathFragment); if (keyName != null && !keyName.equals(Constants.EMPTY_STRING)) { if (position.isCollection && position.isEmptyCollection()) { position.setKeyName(keyName); startEmptyCollection(); } else { newLevel.setKeyName(keyName); } } position = newLevel; isLastEventStart = true; } }
@Override public void openStartElement(XPathFragment xPathFragment, NamespaceResolver namespaceResolver) { super.openStartElement(xPathFragment, namespaceResolver); if(position != null){ T newLevel = createNewLevel(false, position); if(isLastEventStart){ //this means 2 startevents in a row so the last this is a complex object setComplex(position, true); } String keyName = getKeyName(xPathFragment); if(position.isCollection && position.isEmptyCollection() ){ position.setKeyName(keyName); startEmptyCollection(); }else{ newLevel.setKeyName(keyName); } position = newLevel; isLastEventStart = true; } }
protected void setComplex(Level level, boolean complex){ boolean isAlreadyComplex = level.isComplex; super.setComplex(level, complex); if(complex && !isAlreadyComplex){ Level parentLevel = level.parentLevel; if(parentLevel != null && parentLevel.isCollection && parentLevel.isEmptyCollection()){ parentLevel.setEmptyCollection(false); } if((parentLevel != null && parentLevel.isCollection && !parentLevel.isEmptyCollection()) || level.keyName == null){ jsonGenerator.writeStartObject(); }else{ jsonGenerator.writeStartObject(level.keyName); } } }
protected void setComplex(Level level, boolean complex){ boolean isAlreadyComplex = level.isComplex; super.setComplex(level, complex); if(complex && !isAlreadyComplex){ Level parentLevel = level.parentLevel; if(parentLevel != null && parentLevel.isCollection && parentLevel.isEmptyCollection()){ parentLevel.setEmptyCollection(false); } if((parentLevel != null && parentLevel.isCollection && !parentLevel.isEmptyCollection()) || level.keyName == null){ jsonGenerator.writeStartObject(); }else{ jsonGenerator.writeStartObject(level.keyName); } } }
protected void finishLevel(){ if(!(position.isCollection && position.isEmptyCollection() && position.getKeyName() == null)){ jsonGenerator.writeEnd(); } super.finishLevel(); }
protected void finishLevel(){ if(!(position.isCollection && position.isEmptyCollection() && position.getKeyName() == null)){ jsonGenerator.writeEnd(); } super.finishLevel(); }