如何将inputStream转换为JSONObject。需要通过Android应用程序上传文件

时间:2014-01-08 12:25:42

标签: java android json jackson

我有一个文件ABC(输入流),需要通过Jersey Java Rest Server从Android App上传。我能够单独发送文件,但我有jsonObj(对象转换为json)和文件。

我正在尝试将inputstream转换为json String,然后将其插入到jsonObj中。但没有运气。请指导我解决这个问题的方法。


更新[1]

Java客户端:

  1. 使用JSONObject

        ClientConfig config = new DefaultClientConfig();
        Client client = Client.create(config);
        WebResource service = client.resource(getBaseURI());
    
        JSONObject json = new JSONObject();
        json.put("id", "1213");
        json.put("name", "3");
        json.put("date", "2013-12-09");
        String input = new String( json.toString());
    
    ClientResponse response = service.path("/insert/").type(MediaType.APPLICATION_JSON).
                    post(ClientResponse.class,input);
    
  2. 使用inputStream

  3.     String fileName="D://workspaces/src/readMe.pdf";
        InputStream fileInStream = new FileInputStream(fileName);
    
        ClientResponse response = service.path("/uploadFile").type(MediaType.APPLICATION_OCTET_STREAM)
                            .post(ClientResponse.class, fileInStream);
    
  4. 我希望服务器代码不需要。

    现在这个工作完美,但我想要他们在一起,我猜输入流可以与JSONObject合并,问题是如何?有些人说杰克逊,但我需要Android应用程序上的这个客户端代码,我无法负担额外的库。


1 个答案:

答案 0 :(得分:0)

为什么你买不起额外的库?杰克逊对此非常好,或者是Gson。

顺便说一下,您可以尝试以下方法:

InputStream inputStream = null;
String result = null;
try {
    InputStream fileInStream = new FileInputStream(fileName);

    // json is UTF-8 by default
    BufferedReader reader = new BufferedReader(new InputStreamReader(fileInStream , "UTF-8"), 8);
    StringBuilder sb = new StringBuilder();

    String line = null;
    while ((line = reader.readLine()) != null)
    {
        sb.append(line + "\n");
    }
    result = sb.toString();
} catch (Exception e) { 
    // handling
}
finally {
    try{
       if(inputStream != null){
           inputStream.close();}
    catch(Exception exc){}
}