2013-10-09 67 views
1

我试图调用JsonWriter方法在接收到wifi信息后向test.json添加内容,但在成功写入文件后,文件仍为空。这里是代码。Android:JsonWriter无法写入文件

的onReceive

@Override 
     public void onReceive(Context c, Intent i) { 
      if (i.getAction().equals(WifiManager.SCAN_RESULTS_AVAILABLE_ACTION)) 
      { 
       dbhelp = new DataBaseHelper(c); 
       wifilist = new ArrayList<ScanResult>(); 
       wifilist = ((WifiManager) c.getSystemService(Context.WIFI_SERVICE)).getScanResults(); 
       dialog.dismiss(); 
       file = new File(c.getExternalCacheDir(),"testJson.json");   
       try 
       { 
        out = new FileOutputStream(file); 
        writeJson(out); 
       } 
       catch(IOException e) 
       { 
        e.printStackTrace(); 
       } 
      } 
     } 

JsonWriter

public void writeJson(OutputStream out) throws IOException { 
     writer = new JsonWriter(new OutputStreamWriter(out, "UTF-8")); 
     writer.setIndent(" "); 
     jsonFinal(writer);} 

public void jsonFinal(JsonWriter writer) throws IOException{ 
      writer.beginObject(); 
      writer.name("status").value("OK"); 
      writer.name("num_results").value(""); 
      writer.endObject(); 
     } 

预期的结果想

{ 
    "status": "OK", 
    "num_results": "", 
} 

回答

3

你忘了写JSONObject后打电话到JsonWriter.close();做得一样:

 writer.name("status").value("OK"); 
     writer.name("num_results").value(""); 
     writer.endObject(); 
     writer.close(); //<<< call close here 
+0

如果我想执行或调用服务器上的外部文件。我该怎么做? – dhpratik