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<JObjectNode> {
|
|
private List<JObjectNode> list;
|
|
|
public JArrayNode(String fullName, String name, int level) {
|
super(fullName, name, JType.Array, level);
|
list = new ArrayList<JObjectNode>();
|
}
|
|
@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<JObjectNode> iterator() {
|
return list.iterator();
|
}
|
|
}
|