Java 尝试从Tomcat内部的InputStream获取文件对象以进行JSON编组?

Java 尝试从Tomcat内部的InputStream获取文件对象以进行JSON编组?,java,json,tomcat,jackson,inputstream,Java,Json,Tomcat,Jackson,Inputstream,Am在OSX上使用Tomcat7.0.5.5和JDK1.6 在Maven生成的war文件中,我有一个dir,当war文件解包时,它是这样的: $CATALINA_HOME/webapps/mywebapp/WEB-INF/classes/json/person.json 我试图使用RESTful GET调用从输入流获取文件对象: curl -X GET http://localhost:8080/myservice/file/person.json 从uploadFile方法中的注释可以看出

Am在OSX上使用Tomcat7.0.5.5和JDK1.6

在Maven生成的war文件中,我有一个dir,当war文件解包时,它是这样的:

$CATALINA_HOME/webapps/mywebapp/WEB-INF/classes/json/person.json
我试图使用RESTful GET调用从输入流获取文件对象:

curl -X GET http://localhost:8080/myservice/file/person.json
从uploadFile方法中的注释可以看出,这样做的目的是 使用它来封送使用Jackson:

@Path("/file")
public class UploadJsonFileService {

    private final String JSON_DIR = "/json/";

    @GET
    @Path("/upload/{filename}")
    @Produces(MediaType.APPLICATION_JSON)
    public Person uploadFile(@PathParam("filename") String fileName) throws JsonParseException, JsonMappingException, IOException {
        ClassLoader classLoader = 
              Thread.currentThread().getContextClassLoader();
        InputStream inputStream = 
              classLoader.getResourceAsStream(JSON_DIR + fileName);

        // How to obtain a File object from inputStream?
        // e.g. How to assign it from inputStream to jsonFile?

        ObjectMapper mapper = new ObjectMapper();
        Person person = mapper.readValue(jsonFile, Person.class);
        return person;
     }  
 }

是否有更好的方法来实现这一点,例如使用不同的库,如Apache Commons IO FileUtil.getFile方法或org.Apache.catalina.util URL?

WEB-INF对外部世界不可见,完全不适合作为上传文件的地方。为什么名为uploadFile的方法返回Person对象?不知道您使用的是哪个版本的Jackson,但您需要的是接收输入流的readValue,因为通过返回Person对象,我可以看到从Person对象封送的生成JSON字符串。斯卡文,我使用的是readValue-你没有看我的代码吗?@AndrePerez readValue有一个重载方法可用于输入流。参考我链接的javadoc.Srkavin。。。谢谢,那正是我想要的!