gpt4 book ai didi

java - 从字符串中删除所有出现的\

转载 作者:IT老高 更新时间:2023-10-28 20:49:32 28 4
gpt4 key购买 nike

我正在尝试使用 JSON 从服务器获取对象数组。

服务器向我发送以下字符串。

"[{\"DealComment\":null,\"DealVotes\":[],\"DealId\":1,\"CompanyId\":1,\"StartDate\":\"2012-12-13T00:00:00\",\"EndDate\":\"2012-12-16T00:00:00\",\"CouponCode\":\"Test Coupon 1\",\"Description\":\"Test Deal Description 1\",\"VoteUp\":null,\"VoteDown\":null,\"ViewCount\":null,\"Title\":\"Test Deal 1\"},{\"DealComment\":null,\"DealVotes\":[],\"DealId\":2,\"CompanyId\":1,\"StartDate\":\"2012-12-16T00:00:00\",\"EndDate\":\"2012-12-17T00:00:00\",\"CouponCode\":\"Test Coupon 2\",\"Description\":\"Test Description 2\",\"VoteUp\":null,\"VoteDown\":null,\"ViewCount\":null,\"Title\":\"Test Deal 2\"},{\"DealComment\":null,\"DealVotes\":[],\"DealId\":3,\"CompanyId\":1,\"StartDate\":\"2012-12-14T00:00:00\",\"EndDate\":\"2012-12-15T00:00:00\",\"CouponCode\":\"Test Code 3\",\"Description\":\"Test Description 3\",\"VoteUp\":null,\"VoteDown\":null,\"ViewCount\":null,\"Title\":\"Test Deal 3\"},{\"DealComment\":null,\"DealVotes\":[],\"DealId\":4,\"CompanyId\":1,\"StartDate\":\"2012-12-12T00:00:00\",\"EndDate\":\"2012-12-13T00:00:00\",\"CouponCode\":\"Test Coupon 4\",\"Description\":\"Test Description 4\",\"VoteUp\":null,\"VoteDown\":null,\"ViewCount\":null,\"Title\":\"Test Deal 4\"},{\"DealComment\":null,\"DealVotes\":[],\"DealId\":5,\"CompanyId\":2,\"StartDate\":\"2012-12-12T00:00:00\",\"EndDate\":\"2012-12-14T00:00:00\",\"CouponCode\":\"AwD\",\"Description\":\"Very awesome deal!\",\"VoteUp\":null,\"VoteDown\":null,\"ViewCount\":null,\"Title\":\"Awesome Deal 1\"}]"

现在,如果您仔细查看字符串,您会注意到它包含一个 \" 而不是每个 " 。该字符串现在无法格式化为 JSONArray。因此,我需要用 " 替换每次出现的 \" ,这将是一项非常简单的任务, \ 不是转义序列

我尝试使用以下代码。

String jsonFormattedString = jsonStr.replaceAll("\\", "");

但它给了我以下异常(exception)。

12-19 00:35:59.575: W/System.err(444): java.util.regex.PatternSyntaxException: Syntax error U_REGEX_BAD_ESCAPE_SEQUENCE near index 1:
12-19 00:35:59.575: W/System.err(444): \
12-19 00:35:59.575: W/System.err(444): ^

我的整个代码,以防万一:

public void getAllDealsFromServerJson()
{

String apiUrl = "http://passme.azurewebsites.net/api/TestApi/";


HttpClient client = new DefaultHttpClient();
HttpConnectionParams.setConnectionTimeout(client.getParams(), 10000); //Timeout Limit
HttpResponse response;
JSONObject json = new JSONObject();

try{
HttpPost httpPost = new HttpPost(apiUrl);
json.put("requestType", "getalldeals" );

StringEntity se = new StringEntity( json.toString());
se.setContentType(new BasicHeader(HTTP.CONTENT_TYPE, "application/json"));
httpPost.setEntity(se);
response = client.execute(httpPost);
Log.d("Http Response:", response.toString());
jsonResponse = response.toString();

BufferedReader reader = new BufferedReader(new InputStreamReader(response.getEntity().getContent(), "UTF-8"));
String jsonStr = reader.readLine();
Log.d("String Response", jsonStr);
String jsonFormattedString = jsonStr.replaceAll("\\", ""); // gives error
Log.d("Formatted String", jsonFormattedString);
//JSONTokener tokener = new JSONTokener(jsonFormattedString);
/*JSONObject finalResult = new JSONObject(tokener);
Log.d("JSON Response", "" + finalResult.optString("Title"));*/
JSONArray resultArray = new JSONArray(jsonFormattedString);
Log.d("JSON Array Result Length", "" + resultArray.length());
Log.d("JSON Array Result ", "" + resultArray.getJSONObject(0).optInt("DealId"));

}
catch (Exception e)
{
e.printStackTrace();
}
}

最佳答案

试试这个:

String jsonFormattedString = jsonStr.replaceAll("\\\\", "");

因为反斜杠是正则表达式中的转义字符(replaceAll() 接收一个作为参数),它也必须被转义。

关于java - 从字符串中删除所有出现的\,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13939925/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com