java - 将 JSON 对象写入 JSON 文件

标签 java android json bufferedreader

我有一个应用程序,必须获取一个字符串,将其编码为 JSONObject 格式,然后将其写入 SD 中的 JSON 文件。除了写作部分之外,一切似乎都运行良好。我有<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />我的 list 中的命令,这就是我的代码

 btn1.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
          //  String lines[] =  importantemail.split("\\r?\\n");
          //  String firstLine = (lines[0]);
            //String secondLine = (lines[1]);
          //  Toast.makeText(SignificantEmailActivity.this,firstLine + secondLine,Toast.LENGTH_SHORT).show();;
            JSONObject jsonObject = makeJsonObject();
            try{
                Writer output = null;
                File file = new File(Environment.getExternalStorageDirectory()+ "importantemail.json");
                if (!file.exists()) {
                    file.mkdirs();
                }
                output = new BufferedWriter(new FileWriter(file));
                output.write(jsonObject.toString());
                output.close();
                Toast.makeText(getApplicationContext(), "Composition saved", Toast.LENGTH_LONG).show();

            } catch (Exception e) {
                Toast.makeText(getBaseContext(), e.getMessage(), Toast.LENGTH_LONG).show();
            }
            finish();


        }
    });
    }
     public JSONObject makeJsonObject()
     {
         JSONObject object = new JSONObject();
         try {
             object.put("Message ID", id);
             object.put("Sender",accountStr);
             object.put("Subject",subj);
             object.put("E-mail:",importantemail);
         }catch (JSONException e)
         {
             e.printStackTrace();
         }
         return object;
     }

当我按下按钮时,我从 Toast 收到此消息 “存储/模拟/0importantemail.json 没有权限” 不知道为什么会这样

最佳答案

经过测试,您好,替换几行即可解决您的问题。

  JSONObject jsonObject = makeJsonObject();
    try{
        Writer output = null;
        File file = new File(Environment.getExternalStorageDirectory(), "importantemail.json");
        if(file.isDirectory()){
            file.delete();
        }
        if(!file.exists()){
            file.createNewFile();
        }
        output = new BufferedWriter(new FileWriter(file));
        output.write(jsonObject.toString());
        output.close();
        Toast.makeText(getApplicationContext(), "Composition saved", Toast.LENGTH_LONG).show();

    } catch (Exception e) {
        Toast.makeText(getBaseContext(), e.getMessage(), Toast.LENGTH_LONG).show();
    }
    finish();


}
public JSONObject makeJsonObject()
{
    JSONObject object = new JSONObject();
    try {
        object.put("Message ID", 5);
        object.put("Sender","test");
        object.put("Subject","test");
        object.put("E-mail:","test");
    }catch (JSONException e)
    {
        e.printStackTrace();
    }
    return object;
}

关于java - 将 JSON 对象写入 JSON 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47379171/

相关文章:

android - 图标到边缘

java - jboss-eap-quickstarts cluster-ha-singleton 客户端 JNDI 查找类转换异常

java - 从数据文件中读取数据点

java - 如何使用单个 java 类在多个 View 之间切换?

java - 如何在将列表项添加到 ListView 之前以编程方式设置列表项中的字体大小?

Python - 请求拉取 HTML 而不是 JSON

ios - 如何将新数据附加到现有的 JSON 数组 (swiftyJSON)

php - 如何在 PHP 5.3.0 之前验证 JSON?

java - 使用 DynamoMapper 和类 Annotation 创建具有全局二级索引的表

java - 如何创建可以从不同类访问的全局变量列表?