首页 > 解决方案 > 是否可以以编程方式更改 json 资源文件?或者根据用户类型更改 FileUtils.java 以使用不同的 json 文件?

问题描述

我知道我的问题措辞有些混乱,但是...

我的应用程序使用名为 Applozic 的即时消息 SDK。为了在 UI 中隐藏/添加某些功能,可以编辑 applozic-settings.json 文件。

例如:"hideGroupExitButton": true

我的应用有两种类型的用户:发送者和接收者。发送者有一些接收者没有的能力......所以我需要根据用户类型更改其中一些值。

SO:是否可以根据用户类型以编程方式更改其中一些值?

(applozic-settings.json 仅在 FileUtils.java 中使用——这是一个 LOCKED 文件......)

或者,我是否需要为其中一种用户类型创建一个新的 json 文件,并以某种方式更改 FileUtils.java 以使用正确的文件?

这是 FileUtils.java 中的相关代码:


public static String loadSettingsJsonFile(Context context) {
    BufferedReader br = null;
    StringBuffer sb = new StringBuffer();
    try {
        br = new BufferedReader(new InputStreamReader(context.getAssets().open(
                "applozic-settings.json"), "UTF-8"));
        String line;
        if (br != null) {
            while ((line = br.readLine()) != null) {
                sb.append(line);
            }
        }
    } catch (IOException ioe) {
        return null;
    } catch (Exception e) {
    } finally {
        try {
            if (br != null) {
                br.close();
            }
        } catch (IOException e) {
        }
    }
    return sb.toString();
}

标签: javajsonapplozic

解决方案


如果我理解正确,可以编辑 JSON 文件的值。请参阅: JSON 文件 - Java:编辑/更新字段值

如果您想根据用户打开不同的文件,只需将不同的文件存储在字符串中,例如这里:

br = new BufferedReader(new InputStreamReader(context.getAssets().open(
                "applozic-settings.json"), "UTF-8"));

你可以简单地说string file = "applozic-settings.json";

并直接将其传递给上面的函数:

br = new BufferedReader(new InputStreamReader(context.getAssets().open(
                file), "UTF-8"));

所以本质上你可以说:

string file;
if(userType == x){
   file="x.json"
}
else{
   file="y.json"
}


推荐阅读