我有我的代码的问题,我需要提取的ArrayList中的“材料”的标记。实施例的数据:
[{
"name": "A114",
"grupo": "DAW2",
"tutor": 15,
"materias": ["DWES", "DWEC", "IW", "DAW", "IE"]
}]
我想这一点,工作,但我需要的数组列表的内容:
try { // this read the JSON file
line = new String(Files.readAllBytes(Paths.get("fileAulas")));
} catch (Exception ex) {
ex.printStackTrace();
}
JSONArray recs = new JSONArray(line);
for (Object rec : recs) {
Aula datos = new Aula();
JSONObject obj = ((JSONObject) rec);
String name = obj.getString("name");
//datos.setNombre(name);
String grupo = obj.getString("grupo");
//datos.setGrupo(grupo);
int tutor = obj.getInt("tutor");
//datos.setTutor(tutor);
}
我的目标是读取数组列表,然后qazxsw POI到我的另一个类。除了阅读ArrayList的一切工作正常
PD:我使用的Maven下载的Java,执行我使用 “的javac -cp ./*:program.java”
datos.setArraylist
也是一个数组,所以你需要这样的:
materias
这不是类型安全的,所以你需要确保该数组将只具有字符串值。
另外,如果您使用的是Java 8中,您可以遍历值,并将其手动存储(JSONArray materias = obj.getJsonArray("materias");
List<String> materiasList = materias.getValuesAs(String.class);
也是JsonArray
)
快速创建短测试实现您的需求:
Collection<JsonValue>
产量
名:A114组:导师DAW2:15主题0:DWES受试者1:DWEC检体; 2:IW主题3:DAW受试者4:IE
首先得让你的JSON有效。
String json = "[{ \"name\":\"A114\",\"grupo\": \"DAW2\",\"tutor\":15,\"materias\": [\"DWES\",\"DWEC\",\"IW\",\"DAW\",\"IE\"]}]";
JSONArray objectArray = new JSONArray(json);
for (int x = 0; x < objectArray.length(); x++) {
JSONObject obj = objectArray.getJSONObject(x);
System.out.println("Name: " + obj.get("name"));
System.out.println("Grupo: " + obj.get("grupo"));
System.out.println("Tutor: " + obj.get("tutor"));
JSONArray materias = obj.getJSONArray("materias");
for (int y = 0; y < materias.length(); y++) {
System.out.println("Materia " + y + ": " + materias.get(y));
}
}
其次,你可以尝试以下方法:
[{
"name": "A114",
"grupo": "DAW2",
"tutor": 15,
"materias": ["DWES", "DWEC", "IW", "DAW", "IE"]
}]
我相信,在JSON数组的语法是,你必须在你的文件的不同。例如 - 一个简单的完整JSON包含简单元件的阵列将是:
for (JsonElement rec : recs) {
Aula datos = new Aula();
JSONObject obj = rec.getAsJsonObject();
String name = obj.get("name").getAsString();
//datos.setNombre(name);
String grupo = obj.get("grupo").getAsString();
//datos.setGrupo(grupo);
int tutor = obj.get("tutor").getAsInt();
JsonObject obj = rec.getAsJsonObject();
JsonArray materias = obj.getAsJsonArray("materias");
List<String> materiasList = new ArrayList<>();
for (JsonElement item:
materias) {
materiasList.add(item.getAsString());
}
}
在你的文字,你指定一个阵列,无需开启和关闭JSON“{”和“}”。此外,就需要以命名数组元素(在上面的例子中“接触”)。我认为,你想会是什么(我用的数组元素名称“arrayName中”):
{"contacts":[
{ "firstName":"John", "lastName":"Doe" },
{ "firstName":"Jen", "lastName":"Smith" },
{ "firstName":"David", "lastName":"Jones" }
]}