相关疑难解决方法(0)

非法字符 - CTRL-CHAR

我从webservices获得以下exceptopn:

com.ctc.wstx.exc.WstxUnexpectedCharException:非法字符((CTRL-CHAR,代码15))

我知道这背后的原因,我想要返回的数据中有"控制字符".并且在xml中不允许使用CTRL-CHAR.

我搜索了解决方案,很多地方我找到了要删除的代码CTRL-CHAR.

如果我从数据中删除控制字符,我最终会担心数据丢失吗?我想清洁解决方案可能编码.而不是删除控制字符.

java xml web-services character-encoding

15
推荐指数
4
解决办法
5万
查看次数

如何将application/json对象解析为String

我以编程方式导航到返回application/json格式的站点.我似乎无法读取HttpURLConnection中返回的json.我正在使用Jackson将JSON解组为java对象.代码是:

InputStreamReader isr = new InputStreamReader(connection.getInputStream());
BufferedReader br = new BufferedReader(isr);
StringBuilder sb = new StringBuilder();
String line = br.readLine();
while (line != null) {
    sb.append(line);
    line = br.readLine();
}
geoLocation = (new ObjectMapper()).readValue(sb.toString(), GeoLocation.class);
Run Code Online (Sandbox Code Playgroud)

当我打印sb.toString()时,我会看到有趣的字符和unicodes.我应该得到一个结构良好的字符串.由此产生的异常是:

org.codehaus.jackson.JsonParseException: Illegal character ((CTRL-CHAR, code 31)): only regular white space (\r, \n, \t) is allowed between tokens
 at [Source: sun.net.www.protocol.http.HttpURLConnection$HttpInputStream@3f6dadf9; line: 1, column: 2]
    at org.codehaus.jackson.JsonParser._constructError(JsonParser.java:1291)
    at org.codehaus.jackson.impl.JsonParserMinimalBase._reportError(JsonParserMinimalBase.java:385)
Run Code Online (Sandbox Code Playgroud)

例如,如果我的网址是:

http://api.ipinfodb.com/v3/ip-city/?key=<mykeyhere>&ip=38.111.145.101&format=xml
Run Code Online (Sandbox Code Playgroud)

我在浏览器窗口中获得以下内容:

<?xml version="1.0" encoding="UTF-8"?>
<Response>
    <statusCode>OK</statusCode>
    <statusMessage></statusMessage>
    <ipAddress>38.111.145.101</ipAddress>
    <countryCode>US</countryCode>
    <countryName>UNITED STATES</countryName>
    <regionName>CALIFORNIA</regionName>
    <cityName>OAKLAND</cityName>
    <zipCode>94601</zipCode> …
Run Code Online (Sandbox Code Playgroud)

json urlconnection jackson

4
推荐指数
1
解决办法
1万
查看次数