package foundation.json;
|
|
import java.util.ArrayList;
|
import java.util.Iterator;
|
import java.util.List;
|
import java.util.Set;
|
|
import org.json.JSONArray;
|
import org.json.JSONObject;
|
|
import foundation.util.CaseInsensitiveSet;
|
|
public class JArrayReader extends JSONReader {
|
|
private List<JSONReader> items;
|
|
public JArrayReader() {
|
items = new ArrayList<JSONReader>();
|
type = JType.Array;
|
}
|
|
public JArrayReader(String content) {
|
this();
|
parse(content);
|
}
|
|
public JArrayReader(String name, JSONArray array) {
|
this();
|
|
this.name = name;
|
parse(array);
|
}
|
|
@Override
|
public boolean isEmpty() {
|
return items.isEmpty();
|
}
|
|
@Override
|
public boolean hasChildren() {
|
return !items.isEmpty();
|
}
|
|
@Override
|
public boolean has(String name) {
|
return false;
|
}
|
|
@Override
|
public JType getType(String name) {
|
return JType.Empty;
|
}
|
|
@Override
|
public Object getValue() {
|
return null;
|
}
|
|
@Override
|
public Object getValue(String name) {
|
return null;
|
}
|
|
@Override
|
public Object getValue(String name, Object defaultValue) {
|
return null;
|
}
|
|
public String getRawString(String name) {
|
return null;
|
}
|
|
@Override
|
public String getString(String name) {
|
return null;
|
}
|
|
@Override
|
public String getString(String name, String defaultValue) {
|
return null;
|
}
|
|
@Override
|
public String getDecodeString(String name) {
|
return null;
|
}
|
|
@Override
|
public String getDecodeString(String name, String defaultValue) {
|
return null;
|
}
|
|
@Override
|
public Set<String> getStringSet() {
|
Set<String> set = new CaseInsensitiveSet();
|
|
for (JSONReader reader: items) {
|
String value = reader.getDecodeString(null);
|
|
if (value == null) {
|
continue;
|
}
|
|
set.add(value);
|
}
|
|
return set;
|
}
|
|
@Override
|
public List<String> getStringList() {
|
List<String> list = new ArrayList<String>();
|
|
for (JSONReader reader: items) {
|
String value = reader.getString(null);
|
|
if (value == null) {
|
continue;
|
}
|
|
list.add(value);
|
}
|
|
return list;
|
}
|
|
@Override
|
public Set<String> getStringSet(String name) {
|
return null;
|
}
|
|
@Override
|
public List<String> getStringList(String name) {
|
return null;
|
}
|
|
@Override
|
public Integer getInteger(Integer defaultValue) {
|
return null;
|
}
|
|
@Override
|
public Integer getInteger(String name, Integer defaultValue) {
|
return null;
|
}
|
|
@Override
|
public boolean getBoolean(boolean defaultValue) {
|
return false;
|
}
|
|
@Override
|
public boolean getBoolean(String name, boolean defaultValue) {
|
return false;
|
}
|
|
@Override
|
public <T extends JSONReader> T getReader(String name, JType type) {
|
return null;
|
}
|
|
protected void putReader(String name, JSONReader reader) {
|
items.add(reader);
|
}
|
|
@Override
|
protected void putValue(String name, Object value) {
|
return;
|
}
|
|
@Override
|
protected void putValue(Object value) {
|
return;
|
}
|
|
@Override
|
public Iterator<JSONReader> iterator() {
|
return items.iterator();
|
}
|
|
private void parse(String content) {
|
if (content == null) {
|
return;
|
}
|
|
JSONArray jsonArray = new JSONArray(content);
|
parse(jsonArray);
|
}
|
|
private void parse(JSONArray content) {
|
items.clear();
|
|
if (content == null) {
|
return;
|
}
|
|
int max = content.length();
|
|
for (int i = 0; i < max; i++) {
|
String name = this.name + "[" + i + "]";
|
Object value = content.get(i);
|
|
if (value instanceof JSONObject) {
|
JObjectReader item = new JObjectReader(name, (JSONObject)value);
|
items.add(item);
|
}
|
else if (value instanceof JSONArray) {
|
JArrayReader item = new JArrayReader(name, (JSONArray)value);
|
items.add(item);
|
}
|
else {
|
JValueReader item = new JValueReader(name, value);
|
items.add(item);
|
}
|
}
|
}
|
|
@Override
|
public void writeJSON(IJSONWriter writer) {
|
writer.beginArray(name);
|
for(JSONReader jsonReader: items) {
|
jsonReader.writeJSON(writer);
|
}
|
writer.endArray();
|
}
|
|
}
|