Python将数据写入json文件:将 JSON写入文件(android write to json file)

关于Python将数据写入json文件的问题,在android write to json file中经常遇到, 我有一个类 compositionJSON。该类有一个方法调用 makeJSONObject,它创建一个 JSON-Object 并在其中放入东西。这里是类的代码。

我有一个类 compositionJSON。该类有一个方法调用 makeJSONObject,它创建一个 JSON-Object 并在其中放入东西。这里是类的代码。

public class CompositionJso extends JSONObject {
public JSONObject makeJSONObject (String title, String desc, ArrayList<String> imgPath, ArrayList<Resources> imgView) {
    JSONObject obj = new JSONObject() ;
    try {
        obj.put("title", title);
        obj.put("desc", desc);
        obj.put("imgPath", imgPath);
        obj.put("imgViewPath", imgView);
    } catch (JSONException e) {
        e.printStackTrace();
    }
    return obj;
}

现在我创建这个类的一个实例,并调用另一个类中的方法。之后我想将 JSONObject 写入文件并将其保存在设备上的 sd 卡上。这里是代码:

 saveCompo.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            setName();
            createJSONFolder();
            CompositionJso obj = new CompositionJso();
            obj.makeJSONObject(compoTitle, compoDesc, imgPaths, imageViewPaths);
            MyCompositionsListActivity.buildList();
            try {
                Writer output = null;
                File file = new File("storage/sdcard/MyIdea/MyCompositions/" + compoTitle + ".json");
                output = new BufferedWriter(new FileWriter(file));
                output.write(obj.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();
        }
    });

文件保存成功,但如果我打开它,里面什么都没有。

12
makeJSONObjectis returningJSONObject

您的代码应该是

saveCompo.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            setName();
            createJSONFolder();
            CompositionJso obj = new CompositionJso();
            JSONObject  jsonObject = obj.makeJSONObject(compoTitle, compoDesc, imgPaths, imageViewPaths);
            MyCompositionsListActivity.buildList();
            try {
                Writer output = null;
                File file = new File("storage/sdcard/MyIdea/MyCompositions/" + compoTitle + ".json");
                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();
        }
    });
3

尝试用静态方法写一个简单的class来保存和检索文件中的json object

CODE:
public class RetriveandSaveJSONdatafromfile {
 public static String objectToFile(Object object) throws IOException {
    String path = Environment.getExternalStorageDirectory() + File.separator + "/AppName/App_cache" + File.separator;
    File dir = new File(path);
    if (!dir.exists()) {
        dir.mkdirs();
    }
    path += "data";
    File data = new File(path);
    if (!data.createNewFile()) {
        data.delete();
        data.createNewFile();
    }
    ObjectOutputStream objectOutputStream = new ObjectOutputStream(new FileOutputStream(data));
    objectOutputStream.writeObject(object);
    objectOutputStream.close();
    return path;
}
public static Object objectFromFile(String path) throws IOException, ClassNotFoundException {
    Object object = null;
    File data = new File(path);
    if(data.exists()) {
        ObjectInputStream objectInputStream = new ObjectInputStream(new FileInputStream(data));
        object = objectInputStream.readObject();
        objectInputStream.close();
    }
    return object;
}
} 

要将 json 保存在文件中,请使用RetriveandSaveJSONdatafromfile.objectToFile(jsonObj)并从文件中获取数据,请使用

 path = Environment.getExternalStorageDirectory() + File.separator +   
 "/AppName/App_cache/data" + File.separator; 
 RetriveandSaveJSONdatafromfile.objectFromFile(path);
1

谢谢 @ Chris Handy!我创建了一个 JSONObjectVariable 并将其分配给 makeJSONObject。这是我的最终代码:

saveCompo.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            setName();
            createJSONFolder();
            CompositionJso compositionJso = new CompositionJso();
            JSONObject obj;
            obj = compositionJso.makeJSONObject(compoTitle, compoDesc, imgPaths, imageViewPaths);
            MyCompositionsListActivity.buildList();
            try {
                Writer output;
                File file = new File("storage/sdcard/MyIdea/MyCompositions/" + compoTitle + ".json");
                output = new BufferedWriter(new FileWriter(file));
                output.write(obj.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();
        }
    });
0

在 makeJSONObject 方法中,实例化一个新的 JSONObject。

这个代码应该工作。

public void makeJSONObject (String title, String desc, ArrayList<String> imgPath, ArrayList<Resources> imgView) {
    try {
        this.put("title", title);
        this.put("desc", desc);
        this.put("imgPath", imgPath);
        this.put("imgViewPath", imgView);
    } catch (JSONException e) {
        e.printStackTrace();
    }
}

本站系公益性非盈利分享网址,本文来自用户投稿,不代表码文网立场,如若转载,请注明出处

(332)
Steam你画我猜连接不到服务器:如何将Steam连接放在NestJS服务器中
上一篇
如何清理c盘空间不影响系统:CSS不影响标签
下一篇

相关推荐

发表评论

登录 后才能评论

评论列表(15条)