有没有办法替换.json文件中字符串的方括号?

时间:2019-01-24 16:11:08

标签: java android json

我正在开发一个具有庞大的.json数据库的应用程序,我在.json文件中需要的许多字符串中都包含花括号(“ {”,“}”),我不希望这样做,像这样:

[
      {
        "name": "Whatever",
        "entries": [
          "If something something {28} + {41.6} something"
        ]
      }
]

我需要将字符串获取为“ If something something 28 + 41.6 something”。

我通过获取所需的字符串并使用此方法来删除它们:

public String formatText(String text) {

    String newtext = text.replaceAll("\\{", "").replaceAll("\\}", "");

   return newtext;
}

可以,但是会使一切变得缓慢。 我在文件中还有其他字符,例如“ @”,通过选择所有字符并替换为空字符串,可以毫无问题地在文本编辑器中删除它们。但是,如果我对花括号使用相同的逻辑,也会删除json对象的括号。

任何人都可以想到一种编辑此文件并仅除去字符串中括号的方法吗?

(我想过要制作一种方法来复制字符串,格式化它们并将其发送到新的.json,但这在时间上实际上是无效的,因为每个对象内部都有许多不同的值。)< / p>

4 个答案:

答案 0 :(得分:1)

如果您想使用文本编辑器的查找/替换功能-使用像intelij这样的IDE-可以使用正则表达式替换内容。 例如。 (?=\S.)({|})应该只用大括号括住您的情况,而不要触碰json语法大括号。如果您还有其他特殊情况-应该将它们包含在正则表达式中。示例-https://regex101.com/r/wbIgKX/1

但是,我建议创建一个专门的json解析器类来专门处理您的东西。

答案 1 :(得分:0)

如果您确定JSON文件的格式与示例相同,则可以检查该行是否包含除空格和{或}之外的其他内容

如果该行包含其他内容,请替换括号

否则,请不要替换

答案 2 :(得分:0)

尝试一下:

将json数组转换为JObject,然后可以获取每个单独的元素。然后通过解析并替换大括号。

 RetrofitClient.getClient().create(ApiService.class).createNewCustomer(body).enqueue(new Callback<JsonObject>() {
            @Override
            public void onResponse(Call<JsonObject> call, Response<JsonObject> response) {
                Log.d(TAG, "RL: " + response.raw().request().url());
                Log.d(TAG, "Response: " + response.body());
                if (response.body() == null){
                    showToast("There is something wrong with this email. Please try again");
                }
                hideProgressDialog();
            }

希望这会有所帮助:)

答案 3 :(得分:0)

我已经尝试了多种方法来解决此问题,但是您不能直接替换它。有办法做到这一点,首先迭代json并检查该行是否包含花括号。如果包含,则可以使用str.replaceAll(“ [{}]”,“”);。这将删除所有大括号,并为您提供不带大括号的字符串。