如何从字符串中删除'\'字符

时间:2018-12-12 23:43:24

标签: java json regex gson

我有一个字符串,它是一个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);
}

1 个答案:

答案 0 :(得分:1)

解决方案:

问题是新的Gson()。toJson(smsToSend)返回一个String,所以jsonArray是一个字符串数组。我改为新的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);
}