Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/399.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何将android游戏中的数据保存到本地json文件_Java_Android_Json_Database - Fatal编程技术网

Java 如何将android游戏中的数据保存到本地json文件

Java 如何将android游戏中的数据保存到本地json文件,java,android,json,database,Java,Android,Json,Database,我想将用户的数据保存在json文件中的internel内存中,但不起作用。有什么问题吗????这是代码 public JSONObject addToJson(Context context, String email,String password)throws Exception{ String id_P = UUID.randomUUID().toString(); JSONObject jsonObject = new JSONObject(); jsonObj

我想将用户的数据保存在json文件中的internel内存中,但不起作用。有什么问题吗????这是代码

public JSONObject addToJson(Context context, String email,String password)throws Exception{
    String id_P = UUID.randomUUID().toString();
    JSONObject jsonObject = new JSONObject();

    jsonObject.put("id_P",id_P);
    jsonObject.put("Email",email);
    jsonObject.put("password",password);

    
    String j = jsonObject.toString();
    System.out.println(j);
    File file = new File(context.getFilesDir(),"dbApp.json");
    FileWriter fileWriter = new FileWriter(file);
    BufferedWriter bufferedWriter = new BufferedWriter(fileWriter);
    bufferedWriter.write(j);
    bufferedWriter.close();

    return jsonObject;
}

您可以使用不同的本地数据库,如Room、Realm等

Writing:  you need to convert your JSON into String or Model class and then you can store into Database. 
Reading  : convert string into JSON or Model Class and use the same.
多看看

Android中的Realm数据库示例您可以选择以下选项:

书写

User user = realm.createObject(User.class); // Create a new object
user.setName("John");
user.setEmail("john@corporation.com");
realm.commitTransaction();
阅读

RealmQuery<User> query = realm.where(User.class);

// Add query conditions:
query.equalTo("name", "John");
query.or().equalTo("name", "Peter");

// Execute the query:
RealmResults<User> result1 = query.findAll();

// Or alternatively do the same all at once (the "Fluent interface"):
RealmResults<User> result2 = realm.where(User.class)
                              .equalTo("name", "John")
                              .or()
                              .equalTo("name", "Peter")
                              .findAll();
RealmQuery query=realm.where(User.class);
//添加查询条件:
query.equalTo(“姓名”、“约翰”);
query.or().equalTo(“name”、“Peter”);
//执行查询:
RealmResults result1=query.findAll();
//或者一次完成相同的操作(“流畅界面”):
RealmResults result2=realm.where(User.class)
.equalTo(“姓名”、“约翰”)
.或()
.equalTo(“姓名”、“彼得”)
.findAll();

我不是这方面的专家,但我认为您应该做以下几点:

首先将此JSON转换器库添加到build.gradle中:

implementation 'com.google.code.gson:gson:2.8.6'
之后,您需要创建一个模型类,在该模型类中,您应该在不同的映射中对数据进行分类,注意:始终使用映射数组列表将无法正常工作:

Class Model{
Map<String ,String> userData;

 public Model(Map<String, String> setUserdata) {
    this.setUserdata = setUserdata;
}


         public void setSetUserdata(Map<String, String> setUserdata) {
          this.setUserdata = setUserdata;
          }


}  
类模型{
地图用户数据;
公共模型(映射setUserdata){
this.setUserdata=setUserdata;
}
公共void setSetUserdata(映射setUserdata){
this.setUserdata=setUserdata;
}
}  
好的,然后对于设置数据,您应该创建一个映射,然后初始化该类,并将映射传递给它,如下所示:

Map<String ,String> userData=new HashMap<>();
        setUserdata.put("username","something");
        setUserdata.put("password","something");
Model model=new Model(userData);
Map userData=newhashmap();
setUserdata.put(“用户名”、“某物”);
setUserdata.put(“密码”、“某物”);
模型=新模型(用户数据);
现在您可以轻松地将其转换为JSON: Gson Gson=新的Gson(); 字符串json=gson.toJson(model)


您可以轻松地将其以文本格式保存在文件中。

我更愿意使用另一种选项来存储用户数据,但在Android中,您可以使用内部存储。请检查我使用了这个代码,但它不工作有什么问题???