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