1 String url = "http://www.queue-queue.com.sg/AccountInfo.asmx/retrieve_account";
2 HttpGet getRequest = new HttpGet(url);
3 DefaultHttpClient httpClient = new DefaultHttpClient();
4 HttpResponse getResponse = httpClient.execute(getRequest);
5 final int statusCode = getResponse.getStatusLine().getStatusCode();
6 if (statusCode != HttpStatus.SC_OK) {
7 Log.w(getClass().getSimpleName(), "Error " + statusCode + " for URL " + url);
8 return;
9 }
10 String result=EntityUtils.toString( getResponse.getEntity());
11 Log.i("result", result);
12 JSONObject jsonObject = new JSONObject(result);
断点debug下result的结果是
<string xmlns="http://tempuri.org/">
{"account_id":1,"first_name":"zzz","last_name":"xxx","date_of_birth":"2012-1-1","account_gender":"M","phone_country_id":1,"account_phone":"1241343","account_login":"123@gmail.com"}
</string>
我加了这段代码后,XML标签去掉了,但是result值多了""和很多\
request.addHeader("Content-Type", "application/json; charset=utf-8");
各位有谁做过这方面项目的,请指点下,怎么才去的掉XML标签
""这个是json格式的正常标记,用于放置变量的
\的话是转义符,就是转义双引号的
你直接把获取的值读成一个字符串再看看,或者再用json直接反序列化
我读出来的只是像这样的。
"{\"account_id\":1,\"first_name\":\"zzz\",\"last_name\":\"xxx\",\"date_of_birth\":\"2012-1-1\",\"account_gender\":\"M\",\"phone_country_id\":1,\"account_phone\":\"1241343\",\"account_login\":\"123@gmail.com\"}"
正确的应该是
{"account_id":1,"first_name":"zzz","last_name":"xxx","date_of_birth":"2012-1-1","account_gender":"M","phone_country_id":1,"account_phone":"1241343","account_login":"123@gmail.com"}"
多了"" 和\
@codebird:
做这WebService,我这边是
同事直接把接口的返回值当做一个XML节点来解析,没有问题
同事传json对象到我这边,如果我用断点调试查看,也会多出“”和\
不过我直接当字符串,用json的dll反序列化,可以使用
你那里不行的话就手动的截取吧,也就多第一个和最后一个双引号
\这个符号是转义符,不然那么多双引号会错乱的,你输出到一个文件里看看
@codebird: 截取引号没用,\还在。反序列化行吗? 使用gson反序列化吗?那样也太繁琐了吧。
@ERS: =.= 好吧,我彻底屈服了,写了一个aspx转接webservice。可以了。
@codebird:
json有dll可以下载到
封装有方法对变量进行序列化和反序列化的
model也可以使用这个dll的
用jquery $(result).find("string").text();
要是想用javascript解析的话 可以用eval
eval($(result).find("string").text())
这样就可以成json对象了