2011-09-14 32 views
6

我正在使用Play框架。我有一个JSONObject具有结构如下面(如控制台它印刷)将JSONObject写入文件

{ 
    "rows_map":{ 
     "220":["mahesh", 
      "outfit:bmtech,app:salesreport,uuname,ffname,llname", 
      "Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.5", 
      null 
     ], 
"221":["mahesh", 
      "outfit:bmtech,app:salesreport,uuname,ffname,llname", 
      "Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.5", 
      null 
     ], 
"222":["mahesh", 
      "outfit:bmtech,app:salesreport,uuname,ffname,llname", 
      "Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.5", 
      null 
     ], 
"223":["mahesh", 
      "outfit:bmtech,app:salesreport,uuname,ffname,llname", 
      "Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.5", 
      null 
     ] 
}, 
    "columns_map":["Sender", 
     "Message Received", 
     "Device", 
     "Time" 
    ] 
} 

欲此的JSONObject写入文件。这里是代码

String path = "/var/www/html/Prj/public/CacheLayer/Incoming_Cache/CacheFileMgr.cache"; 

      ObjectOutputStream outputStream = null; 
     try{ 
      outputStream = new ObjectOutputStream(new FileOutputStream(path)); 
      System.out.println("Start Writings"); 
       outputStream.writeObject(object); 
       outputStream.flush(); 
        outputStream.close(); 
      }catch (Exception e){ 
      System.err.println("Error: " + e); 
      } 

上面没有成功写入文件。序列化错误发生。

+1

请将错误消息与代码一起发布。它可能是一个权限错误,或者它可能很简单,因为'JSONObject'没有实现'Serializable'接口,这是'.writeObject()'工作所必需的(http:// download。 oracle.com/javase/1,5.0/docs/api/java/io/Serializable.html)。 – jefflunt

回答

13

在JSONObject上调用toString,然后序列化字符串。 JSONObject本身不可序列化。

String jsonString = jsonObject.toString(); 
+0

谢谢,使用toString成功写入文件。在开始时,它将附加这些字符 。在控制台它不在那里。这是什么,我怎么可以忽略这一点。 – Arasu

+1

好的,我在这里找到了解决方案[链接] http://stackoverflow.com/questions/2801305/java-unwanted-characters-at-the-beginning-of-a-file-as-result-of-serialization – Arasu

6

JSON是序列化,它没有实现序列化,只需将其转换为字符串,并保存在字符串中的一个文件(如文本)。