Làm thế nào tôi có thể tạo một mảng json giống như ví dụ bên dưới bằng cách sử dụng jackson.Tạo đối tượng json bằng cách sử dụng jackson
Tôi đã thử sử dụng ObjectMapper, nhưng điều này có vẻ không chính xác.
try (DirectoryStream<Path> ds = Files.newDirectoryStream(path)) {
for (Path file : ds) {
System.out.println("name:"+file.getFileName()+
"\n"+
"mime:"+Files.probeContentType(file)+
"\n"+
"locked:"+!Files.isWritable(file));
}
} catch (IOException e) {
System.err.println(e);
}
Cuối cùng, tôi sẽ tạo một json có các giá trị dưới đây.
* - (int) size file size in b. required
* - (int) ts file modification time in unix time. required
* - (string) mime mimetype. required for folders, others - optionally
* - (bool) read read permissions. required
* - (bool) write write permissions. required
* - (bool) locked is object locked. optionally
* - (bool) hidden is object hidden. optionally
* - (string) alias for symlinks - link target path relative to root path. optionally
* - (string) target for symlinks - link target path. optionally
Dưới đây là một ví dụ mà tôi đã được cung cấp.
"files": [
{
"mime": "directory",
"ts": 1334071677,
"read": 1,
"write": 0,
"size": 0,
"hash": "l1_Lw",
"volumeid": "l1_",
"name": "Demo",
"locked": 1,
"dirs": 1
},
{
"mime": "directory",
"ts": 1334071677,
"read": 1,
"write": 0,
"size": 0,
"hash": "l1_Lw",
"volumeid": "l1_",
"name": "Demo",
"locked": 1,
"dirs": 1
},
{
"mime": "directory",
"ts": 1340114567,
"read": 0,
"write": 0,
"size": 0,
"hash": "l1_QmFja3Vw",
"name": "Backup",
"phash": "l1_Lw",
"locked": 1
},
{
"mime": "directory",
"ts": 1310252178,
"read": 1,
"write": 0,
"size": 0,
"hash": "l1_SW1hZ2Vz",
"name": "Images",
"phash": "l1_Lw",
"locked": 1
},
{
"mime": "application\/x-genesis-rom",
"ts": 1310347586,
"read": 1,
"write": 0,
"size": 3683,
"hash": "l1_UkVBRE1FLm1k",
"name": "README.md",
"phash": "l1_Lw",
"locked": 1
}
]
EDIT 1
Map<String, Object> filesMap = new HashMap<>();
List<Object> files = new ArrayList<Object>();
System.out.println("\nNo filter applied:");
try (DirectoryStream<Path> ds = Files.newDirectoryStream(path)) {
for (Path file : ds) {
Map<String, Object> fileInfo = new HashMap<>();
fileInfo.put("name", file.getFileName().toString());
// Prints Files in Director
// Files.getAttribute(file,"size");
System.out.println("name:" + file.getFileName().toString() +
"\n" +
"mime:" + Files.probeContentType(file) +
"\n" +
"locked:" + !Files.isWritable(file));
ObjectMapper mapper = new ObjectMapper();
String json = mapper.writeValueAsString(fileInfo);
files.add(json);
}
} catch (IOException e) {
System.err.println(e);
}
files.toArray();
filesMap.put("files", files);
ObjectMapper mapper = new ObjectMapper();
String jsonString;
try {
jsonString = mapper.writeValueAsString(filesMap);
} catch (IOException e) {
jsonString = "fail"; //To change body of catch statement use File | Settings | File Templates.
}
Đặt ra json sau đó là gần gũi hơn, nhưng tôi không thể hiểu tại sao có dấu ngoặc kép phụ trước và sau khi {}.
{"files":["{\"name\":\"32C92124-EFCF-42C1-AFD2-8B741AE6854B.jpg\"}","{\"name\":\"58D5B83F-4065-4D6E-92BE-8181D99CB6CB.jpg\"}","{\"name\":\"7B1464A0-FBA1-429E-8A39-3DE5B539FBF8.jpg\"}","{\"name\":\"888159CF-45BE-475F-8C6A-64B3E1D97278.jpg\"}"]}
cuối cùng trả lời
Map<String, Object> filesMap = new HashMap<>();
List<Object> files = new ArrayList<Object>();
System.out.println("\nNo filter applied:");
try (DirectoryStream<Path> ds = Files.newDirectoryStream(path)) {
for (Path file : ds) {
Map<String, Object> fileInfo = new HashMap<>();
fileInfo.put("name", file.getFileName().toString());
System.out.println("name:" + file.getFileName().toString() +
"\n" +
"mime:" + Files.probeContentType(file) +
"\n" +
"locked:" + !Files.isWritable(file));
files.add(fileInfo);
}
} catch (IOException e) {
System.err.println(e);
}
files.toArray();
filesMap.put("files", files);
ObjectMapper mapper = new ObjectMapper();
String jsonString;
try {
jsonString = mapper.writeValueAsString(filesMap);
} catch (IOException e) {
jsonString = "fail";
}
Câu hỏi của bạn dường như thiếu một câu hỏi thực tế. – Aurand
Xin lỗi, với rất nhiều vấn đề về internet mà tôi đang gặp phải tối nay tôi nghĩ tôi đã quên thêm điều đó. : P Bây giờ nó có ý nghĩa hơn không? – zmanc
Tôi khá bối rối. Không có sử dụng rõ ràng của 'ObjectMapper' ở đây. Bạn đang cố gắng để chuyển đổi một cái gì đó để sử dụng 'ObjectMapper' hoặc những gì? –