在Android中将简单的JSON文件加载到二维数组中

时间:2017-09-25 15:06:16

标签: android arrays json

在最简单的事情上让自己疯狂。我有一个名为config.txt的JSON文件。该文件如下所示。     {   “UsePipesInGuestData”:true }

我想做的就是获得一个二维数组,这样: Array [0] = UsePipesInGuestData和 数组[1] =真

我已经尝试了4个小时的各种尝试,我最近的显示如下:     private void getConfig(){         //从config.txt

读取配置信息的功能
    FileInputStream is;
    BufferedReader reader;

    try {
        final File configFile = new File(Environment.getExternalStorageDirectory().getPath() + "/guestlink/config.txt");
        if (configFile.exists()) {
            is = new FileInputStream(configFile);
            reader = new BufferedReader(new InputStreamReader(is));
            String line = reader.readLine();
            while (line != null) {
                line = reader.readLine();
                if(line!= null) {
                        line = line.replace("\"", "");  //Strip out Quotes
                        line = line.replace(" ", "");   //Strip out Spaces

                    if ((!line.equals("{")) || (!line.equals("}"))) {

                    } else {
                        String[] configValue = line.split(":");

                        switch (configValue[0]) {
                            case "UsePipesInGuestData":
                                if (configValue[1].equals("true")) {
                                    sharedPreferences.edit().putString("UsePipes", "true").apply();
                                } else {
                                    sharedPreferences.edit().putString("UsePipes", "false").apply();
                                }
                                break;
                        }
                    }
                }
            }
            reader.close();
        }
    } catch (Exception e) {
        e.printStackTrace();
    }
}

我似乎无法忽略其中包含{和}的行。

显然,必须有一种更简单的方法。 JAVA似乎只需要使用极大量的代码来完成最简单的操作。非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

我相信你的情况不正确。您尝试在条件(!line.equals("{")) || (!line.equals("}"))的else中读取该文件。简化,您的代码将在以下情况发生时运行:

!(!{||!})=> {&& (应用De Morgan法律)

这意味着只有当行是" {" AND 它是"}"这是一个矛盾。尝试使用简单的条件,例如(!line.equals("{")) && (!line.equals("}"))(这是您希望执行代码时)。

此外,您可能会在字符串中收到行尾字符(\ n),这会使您的情况失败(" {\ n"!=" {") 。我建议您调试并查看您在这些行中获得的实际值。