Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用@GET在文件系统上处理JSON文件?_Json_File Io_Jersey - Fatal编程技术网

使用@GET在文件系统上处理JSON文件?

使用@GET在文件系统上处理JSON文件?,json,file-io,jersey,Json,File Io,Jersey,我使用Jersey&Jackson使用JSON处理基于Restful的web服务 假设我有json文本文件,例如驻留在文件系统上的customer.json 可以从实现@GET的Restful方法处理json文件吗 我需要在@GET方法中使用Java的文件I/O上传文件吗 非常感谢您的帮助……如果JSON文件很小,是的,您可以在URL末尾对其进行编码 GET www.mydomain.tld/process/json/?string={ json: "testest" } 但事实上,不是。作为

我使用Jersey&Jackson使用JSON处理基于Restful的web服务

假设我有json文本文件,例如驻留在文件系统上的customer.json

可以从实现@GET的Restful方法处理json文件吗

我需要在@GET方法中使用Java的文件I/O上传文件吗


非常感谢您的帮助……

如果JSON文件很小,是的,您可以在URL末尾对其进行编码

GET www.mydomain.tld/process/json/?string={ json: "testest" }
但事实上,不是。作为一种解决方法,您可以发送对该文件的引用,例如该文件所在的url或以前将其发布到服务器的临时GUID

GET www.mydomain.tld/process/json/?file=http://www.otherdomain.tld/file.json
或者,第一次将整个文件内容发送到另一个控制器将返回一个guid,服务器可以在后续GET请求中使用该guid从本地存储或数据库获取上载的文件

guid <-- POST www.mydomain.tld/upload/json/ {BIG JSON FILE}
GET www.mydomain.tld/process/json/?guid={guid}

不建议使用GET,因为它被认为是一种安全的方法。看见您应该根据上传的最终结果使用POST或PUT:以防后续上传不会改变服务器或POST的状态

Jersey对上传有很好的支持。下面是一个很好的示例,说明如何实现上载:

如果您不想像示例中那样将文件保存到光盘,可以使用ByteArrayOutputStream将其存储在内存中。然后从中创建一个字符串:

String str = new String(byteArrayOutputStream.toByteArray(), "UTF-8");
然后创建JSONObject:

JSONObject json = new JSONObhect(str);

http get查询有长度限制。除非你发的信比较短,否则我不太明白你的问题。你想干什么?这个文件系统在哪里:在服务器上,在客户机上?你想上传吗?为什么要使用GET?