package foundation.json.tree; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import foundation.json.JSONBuilder; import foundation.json.JType; public class JArrayNode extends JNode implements Iterable { private List list; public JArrayNode(String fullName, String name, int level) { super(fullName, name, JType.Array, level); list = new ArrayList(); } @Override public void toJSON(JSONBuilder builder) { builder.beginArray(name); for (JNode node: children) { node.toJSON(builder); } builder.endArray(); } @Override public void toBand(JBand band) { for (JObjectNode jObject: list) { jObject.toBand(band); } } @Override protected void loadBandItem(JBand band, JBandItem item) { int itemLevel = level + 1; //1. 加载当前 Item JNode node = JNode.createInstance(this, item.getName(itemLevel), item.getType(itemLevel), itemLevel); node.loadBandItem(band, item); //2. 尝试加载后面的 Item while (band.hasNext(name, level)) { item = band.next(); node = JNode.createInstance(this, item.getName(itemLevel), item.getType(itemLevel), itemLevel); node.loadBandItem(band, item); } } @Override public Iterator iterator() { return list.iterator(); } }