【问题标题】:How can I erase the '\' character from my string如何从字符串中删除“\”字符
【发布时间】:2018-12-12 23:43:24
【问题描述】:

我有一个字符串,它是一个 JSON 数组,但它包含我不想要的字符:一些 " 和所有 \

这是字符串:["{\"id\":1,\"tel\":526833,\"date\":\"13/12\",\"message\":\"Test1\"}","{\"id\":2,\"tel\":526834,\"date\":\"13/12\",\"message\":\"Test2\"}"]

我希望它是这样的:[{"id":1,"tel":526833,"date":"13/12","message":"Test1"}","{"id":2,"tel":526834,"date":"13/12","message":"Test2"}]

我通过这样做摆脱了第一个和最后一个"

    jsonResp = jsonResp.replaceAll("\"[{]", "{");
    jsonResp = jsonResp.replaceAll("[}]\"", "}");

现在我需要删除 \,我尝试执行类似 jsonResp = jsonResp.replaceAll("\\", ""); 的操作,但我的 IDE 显示“非法/不支持的转义序列”。

如果你想测试,这是我的完整代码:

public static void main(String[] args) {
    JsonArray jsonArray = new JsonArray();
    SmsToSend smsToSend1 = new SmsToSend(1,526833,"Test1");
    SmsToSend smsToSend2 = new SmsToSend(2,526834,"Test2");
    jsonArray.add(new Gson().toJson(smsToSend1));
    jsonArray.add(new Gson().toJson(smsToSend2));
    String jsonResp = jsonArray.toString();
    System.out.println(jsonResp);
    jsonResp = jsonResp.replaceAll("\"[{]", "{");
    jsonResp = jsonResp.replaceAll("[}]\"", "}");
    jsonResp = jsonResp.replaceAll("\\", "");
    System.out.println(jsonResp);
}

非常感谢您的帮助。

解决方案:

问题是new Gson().toJson(smsToSend) 返回一个字符串,所以jsonArray 是一个字符串数组。 我更改为new Gson().toJsonTree(smsToSend),它返回一个对象,现在它可以正常工作了。

public static void main(String[] args) {
    JsonArray jsonArray = new JsonArray();
    SmsToSend smsToSend1 = new SmsToSend(1,526833,"Test1");
    SmsToSend smsToSend2 = new SmsToSend(2,526834,"Test2");
    jsonArray.add(new Gson().toJsonTree(smsToSend1));
    jsonArray.add(new Gson().toJsonTree(smsToSend2));
    String jsonResp = jsonArray.toString();
    System.out.println(jsonResp);
}

【问题讨论】:

  • 我认为你应该找出为什么字符串是这样格式化的。通过删除字符,很有可能会弄乱格式并使其无法解析
  • 您拥有的是 JSON 对象,它被编码为 JSON 数组中的字符串。首先,您应该弄清楚发生这种情况的原因和地点。如果源头无法修复,就解析两次,不要尝试手动修改。
  • 看起来你有一个 JSON 字符串数组,即每个对象都已被字符串化,放入一个数组中,然后整个事物再次被字符串化。您应该能够将数组中的每个字符串解析为对象
  • 好的,我找到了解决方案:问题是new Gson().toJson(smsToSend2) 返回一个字符串,所以数组是我更改为new Gson().toJsonTree(smsToSend2) 的字符串数组,它返回一个对象,现在它工作正常。非常感谢
  • @Couldosh:你也可以回答你的问题。

标签: java json regex gson


【解决方案1】:

解决办法:

问题是 new Gson().toJson(smsToSend) 返回一个字符串,所以 jsonArray 是一个字符串数组。我更改为 new Gson().toJsonTree(smsToSend) ,它返回一个对象,现在它工作正常。

public static void main(String[] args) {
    JsonArray jsonArray = new JsonArray();
    SmsToSend smsToSend1 = new SmsToSend(1,526833,"Test1");
    SmsToSend smsToSend2 = new SmsToSend(2,526834,"Test2");
    jsonArray.add(new Gson().toJsonTree(smsToSend1));
    jsonArray.add(new Gson().toJsonTree(smsToSend2));
    String jsonResp = jsonArray.toString();
    System.out.println(jsonResp);
}

【讨论】:

    猜你喜欢
    • 2019-12-04
    • 2021-10-26
    • 2015-12-01
    • 2010-10-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多