unexpected character('' (code 65279 / 0xfeff))

java调用http接口获取Json格式的返回出现以下错误:
SendToWeb: {"identity":45,"msgid":1000,"sessionid":"","Data":{"Account":"admin","Password":"666666"}}
ConnectUrl: http://192.168.x.xx/index.php/unifiedInterface
getFromWeb: {"identity":41,"msgid":1000,"sessionid":"","result":0}
org.codehaus.jackson.JsonParseException: Unexpected character ('' (code 65279 / 0xfeff)): expected a valid value (number, String, array, object, 'true', 'false' or 'null')
at [Source: java.io.StringReader@39c0f4a; line: 1, column: 2]

与web的php开发人员交流之后,他该代码之后返回数据为 "{"identity":41,"msgid":1000,"sessionid":"","result":0}"之后 我对返回数据进行处理
getFromWeb = getFromWeb.replaceAll("\\","");
getFromWeb = getFromWeb.substring(2, resp.length()-1); //去掉斜杠 以及首末的"
之后再去解析 成功!
但由于其他开发人员也需要调用该接口,所以php那边还得改回去,我又得重新面对这个JsonParseException错误了,在更改代码的过程中无意间有以下变动
getFromWeb = getFromWeb.replaceAll("\\","");
getFromWeb = getFromWeb.substring(2, resp.length()-1);
getFromWeb = "{"+getFromWeb+"}"; //把首末加上去 其实是因为懒!
测试之后,居然解析成功了!!! 作为一个java新手暂时找不出缘故 便以此作为一个实例。

以下是代码:
public static Integer logon(String ip_port){
// String url = "http://192.168.x.xx/index.php/unifiedInterface";
//identity、msgid、data
/**{
"identity": n, //发送方身份id,见3.1规定
"msgid":1111, //消息字定义,见3.3规定
"sessionid": "" //会话id,异步指令时通过会话id查询指令结果
"Data":{
"Account":"" //用户名
"Password":"" //密码
}
}*/
url = "http://"+ip_port+"/index.php/unifiedInterface";

    Datagram data = new Datagram(identity,1000);
    data.getData().put("Account", "admin");
    data.getData().put("Password", "666666");
    Integer res = null;
    try {
        String resp = http.sendPost(url, data);
        //?  下两行代码解决jsonparseException

// resp=resp.substring(2, resp.length()-1);
// resp = "{"+resp+"}";
System.out.println("ConnectUrl: "+url);
System.out.println("getFromWeb: "+resp);
Map maps = objectMapper.readValue(resp, Map.class);
// Map maps = objectMapper.readValue("{"identity":41,"msgid":1000,"sessionid":"","result":1}", Map.class);
res = (Integer) maps.get("result");
} catch (Exception e) {
e.printStackTrace();
}
return res;
}

你可能感兴趣的:(unexpected character('' (code 65279 / 0xfeff)))