1

以下の関数でjsonを作成しています。ただし、json にはその前後に余分なブレースがあります。これは、他のjsonと組み合わせているときに問題を引き起こしています。json lint を使用して json を検証すると、次のエラーが発生します。

余分なブレースを削除するにはどうすればよいですか?

Parse error on line 36:
...       }    },    {        "files": [
---------------------^
Expecting 'STRING'

これが関数です。

        Map<String, Object> filesMap = new HashMap<>();
        List<Object> files = new ArrayList<>();
//        System.out.println("\nNo filter applied:");
        try (DirectoryStream<Path> ds = Files.newDirectoryStream(path)) {
            for (Path file : ds) {
                Map<String, Object> fileInfo = new HashMap<>();
                if (Files.isDirectory(file)) {
                    fileInfo.put("mime", "directory");
                }
//                else {
//                    fileInfo.put("mime", Files.probeContentType(file));
//                }
                fileInfo.put("ts", Files.getLastModifiedTime(file).toMillis());
                int readable = (Files.isReadable(file)) ? 1 : 0;
                fileInfo.put("read", readable);
                int writable = (Files.isWritable(file)) ? 1 : 0;
                fileInfo.put("write", writable);
                fileInfo.put("size", Files.size(file));
                fileInfo.put("name", file.getFileName().toString());
                int hidden = (Files.isHidden(file)) ? 1 : 0;
                fileInfo.put("hidden", hidden);
                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";  //To change body of catch statement use File | Settings | File Templates.
        }

以下は、返されて残りの json に追加される JSON です。

{
    "files": [
        {
            "ts": 1370195824000,
            "hidden": 1,
            "name": ".DS_Store",
            "write": 1,
            "read": 1,
            "size": 6148
        },
        {
            "ts": 1370219091000,
            "hidden": 0,
            "name": "32 weeks.jpg",
            "write": 1,
            "read": 1,
            "size": 1963258
        },
        {
            "ts": 1370195825000,
            "hidden": 0,
            "name": "_MG_2975.jpg",
            "write": 1,
            "read": 1,
            "size": 345673
        },
        {
            "ts": 1370195825000,
            "hidden": 0,
            "name": "_MG_2976.jpg",
            "write": 1,
            "read": 1,
            "size": 13513255
        },
        {
            "ts": 1370195825000,
            "hidden": 0,
            "name": "_MG_2982.jpg",
            "write": 1,
            "read": 1,
            "size": 370187
        },
        {
            "ts": 1370723352000,
            "hidden": 0,
            "name": "DIrectory",
            "write": 1,
            "read": 1,
            "mime": "directory",
            "size": 68
        },
        {
            "ts": 1370195825000,
            "hidden": 0,
            "name": "IMG_0963.jpg",
            "write": 1,
            "read": 1,
            "size": 3691532
        }
    ]
}

これが最終的なJSONです

{
    "cwd": {
        "mime": "directory",
        "ts": 1334071677,
        "read": 1,
        "write": 0,
        "size": 0,
        "hash": "l1_Lw",
        "volumeid": "l1_",
        "name": "Demo",
        "locked": 1,
        "dirs": 1
    },
    "options": {
        "path": "Demo",
        "url": "http://elfinder.org/files/demo/",
        "tmbUrl": "http://elfinder.org/files/demo/.tmb/",
        "disabled": [
            "extract"
        ],
        "separator": "/",
        "copyOverwrite": 1,
        "archivers": {
            "create": [
                "application/x-tar",
                "application/x-gzip",
                "application/x-bzip2",
                "application/zip",
                "application/x-rar",
                "application/x-7z-compressed"
            ],
            "extract": [

            ]
        }
    },
    {
        "files": [
            {
                "ts": 1370195824000,
                "hidden": 1,
                "name": ".DS_Store",
                "write": 1,
                "read": 1,
                "size": 6148
            },
            {
                "ts": 1370219091000,
                "hidden": 0,
                "name": "32 weeks.jpg",
                "write": 1,
                "read": 1,
                "size": 1963258
            },
            {
                "ts": 1370195825000,
                "hidden": 0,
                "name": "_MG_2975.jpg",
                "write": 1,
                "read": 1,
                "size": 345673
            },
            {
                "ts": 1370195825000,
                "hidden": 0,
                "name": "_MG_2976.jpg",
                "write": 1,
                "read": 1,
                "size": 13513255
            },
            {
                "ts": 1370195825000,
                "hidden": 0,
                "name": "_MG_2982.jpg",
                "write": 1,
                "read": 1,
                "size": 370187
            },
            {
                "ts": 1370723352000,
                "hidden": 0,
                "name": "DIrectory",
                "write": 1,
                "read": 1,
                "mime": "directory",
                "size": 68
            },
            {
                "ts": 1370195825000,
                "hidden": 0,
                "name": "IMG_0963.jpg",
                "write": 1,
                "read": 1,
                "size": 3691532
            }
        ]
    },
    "api": "2.0",
    "uplMaxSize": "16M",
    "netDrivers": [

    ],
    "debug": {
        "connector": "php",
        "phpver": "5.3.21-1~dotdeb.0",
        "time": 0.14000010490417,
        "memory": "1324Kb / 1198Kb / 128M",
        "upload": "",
        "volumes": [
            {
                "id": "l1_",
                "name": "localfilesystem",
                "mimeDetect": "internal",
                "imgLib": "imagick"
            },
            {
                "id": "l2_",
                "name": "localfilesystem",
                "mimeDetect": "internal",
                "imgLib": "gd"
            }
        ],
        "mountErrors": [

        ]
    }
}
4

1 に答える 1

2

その JSON をどのように追加したかはわかりませんが、これは明らかに正当な JSON ではありません。

Jackson を使用しているため、非常に簡単です。

((ObjectNode) origNode).putAll(returnedNode);

JSON データを生成するには、実際には を使用する必要がありJsonNodeFactoryます。手動で行わないでください。

于 2013-06-08T22:52:45.793 に答える