Чтобы построить JSONArray
, как данные из BaseX
экспортируются как JSON
? Или запрашивается XQuery
, чтобы String
можно было читать с Java. Выведите как:
[
{
"0":"z10",
"1":"y9",
"2":"x7",
"3":"atrib6",
"name":"alice"
},
{
"0":"home5",
"1":"cell4",
"name":"sue"
},
{
"0":"phone3",
"1":"phone2",
"2":"phone1",
"name":"joe"
},
{
"name":"people"
}
]
Как loadPeople
выполнит обратную операцию addPeople
? Должен быть ввод от String
до addPeople
. Где addPeople
принимает JSONArray
и сохраняет его с BaseX
, loadPeople берет строку.
Желаемым выводом loadPeople
будет тот исходный массив JSONArray
, полученный из BaseX
.
код:
package groupBaseX.basex.json;
import groupBaseX.io.Person;
import java.util.Properties;
import java.util.logging.Logger;
import org.basex.core.BaseXException;
import org.basex.core.Command;
import org.basex.core.Context;
import org.basex.core.cmd.Add;
import org.basex.core.cmd.List;
import org.basex.core.cmd.Open;
import org.basex.core.cmd.Set;
import org.basex.io.in.ArrayInput;
import org.json.JSONArray;
import org.json.JSONObject;
public class DatabaseHelper {
private static final Logger log = Logger.getLogger(DatabaseHelper.class.getName());
private Properties properties = new Properties();
private String databaseName = null;
private Context context = null;
private String parserType = null;
private DatabaseHelper() {
}
public DatabaseHelper(Properties properties) {
this.properties = properties;
}
private void init() throws BaseXException {
log.fine(properties.toString());
parserType = properties.getProperty("parserType");
databaseName = properties.getProperty("databaseName");
context = new Context();
log.fine(new List().execute(context));
}
public void loadPeople() throws BaseXException {
init();
log.fine(new Open(databaseName).execute(context));
log.fine(new Set("parser", "json").execute(context));
//
//should return JSONArray
}
public void addPeople(java.util.List<Person> people) throws BaseXException {
init();
log.fine(new Open(databaseName).execute(context));
log.fine(new Set("parser", "json").execute(context));
JSONObject jsonPerson = null;
JSONArray jsonPeople = new JSONArray();
Command add = null;
for (Person person : people) {
jsonPerson = new JsonHelper(person).convert();
jsonPeople.put(jsonPerson);
}
add = new Add(".json");
add.setInput(new ArrayInput(jsonPeople.toString()));
log.fine(add.execute(context));
}
}
Возможно, это вопрос использования XQuery
для возврата JSONArray
как String
? Но это кажется неловким, учитывая, что сама база данных может просто экспортировать данных.