【问题标题】:Load simple JSON file into 2 dimensional Array in Android将简单的 JSON 文件加载到 Android 中的二维数组中
【发布时间】:2017-09-25 15:06:16
【问题描述】:

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

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

我已经尝试了 4 个小时,各种尝试,我最近的如下所示: 私人无效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 似乎只需要大量的代码来做最简单的事情。非常感谢任何帮助。

【问题讨论】:

标签: android arrays json


【解决方案1】:

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

!(!{ || !}) => { && }(应用德摩根定律)

这意味着只有当行是“{”AND它是“}”时,你才会运行你的代码,这是一个矛盾。尝试使用简单的条件,例如(!line.equals("{")) && (!line.equals("}"))(这是您想要执行代码的时间)。

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

【讨论】:

  • 感谢您的快速回复。说得通。有时我只是看不到我面前的东西。只使用 Android 大约 2 个月,所以仍然学到很多东西。
  • 我们都去过那里。不用担心。快乐编码
猜你喜欢
  • 2011-02-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多