httpclient 使用这个json字符串,遇到不规则的字符串,怎么处理
2个回答
展开全部
发送ajax请求和一般请求无异,只是在请求头信息中加上一条:
httpGet.addHeader("X-Requested-With","XMLHttpRequest");
下面是在目标网页上的ajax请求源码
<script>
Do(function(){
$("html").delegate(".a_search_more","click",function(c){
c.preventDefault();
if(b.hasClass("processing")){
return
}
var a=b.data();
b.attr("title",b.text()).text("加载中...");
$.get("/j/search",a,function(d){
if(d.r){
b.text("加载失败...");
return
}
b.removeClass("processing");
b.text(b.attr("title"));
$(d.items.join("")).insertBefore(b.parent());//根据此行,基本确定返回的是json字符串
if(!d.more){
b.hide()
}
})
});
......
}
</script>
确定返回的是json字符串后,接下来要对json字符串进行处理。java中关于json处理的jar包比较多的是json-lib-XXX.jar,这个包到jdk1.5之后就没有见到新的版本了。所以我使用的是alibaba出的fastjson。
下面贴出返回的json字符串代码:
{"total":249,"more":true,"limit":20,"items":["\n \n <div class=\"result\">\n ... ... </div>\n <p>吴邪戴上了三叔的人皮面具,以三叔的身份整顿了三叔在长沙的产业,三叔手下盘口的马仔无不归顺。吴邪、潘子和小花等人兵分三路,从杭州、长沙和北京出发前往广西。在广...</p>\n </div>\n </div>\n"]}
可以看到,大量显示的数据都在items中,接下来
JSONObject json = JSON.parseObject(html); //将JSON类型的String语句转为JSON Object
JSONObject jItem = json.getJSONObject("items");
上文中,html为返回的json字符串。这样就得到了items的值。
["\n \n <div class=\"result\">\n ... ... </div>\n </div>\n"]
但是,这其中包含换行符和转义字符“\”,还有首尾的中括号,双引号。
String items = j.toString();
items = items.replace("\\n", "");
items = items.replace("\\","");
items = items.substring(2, items.length()-2);
Document docAdd = Jsoup.parse(items); //解析成为document
results = docAdd.select("div.result"); //得到Elements,成功解析
httpGet.addHeader("X-Requested-With","XMLHttpRequest");
下面是在目标网页上的ajax请求源码
<script>
Do(function(){
$("html").delegate(".a_search_more","click",function(c){
c.preventDefault();
if(b.hasClass("processing")){
return
}
var a=b.data();
b.attr("title",b.text()).text("加载中...");
$.get("/j/search",a,function(d){
if(d.r){
b.text("加载失败...");
return
}
b.removeClass("processing");
b.text(b.attr("title"));
$(d.items.join("")).insertBefore(b.parent());//根据此行,基本确定返回的是json字符串
if(!d.more){
b.hide()
}
})
});
......
}
</script>
确定返回的是json字符串后,接下来要对json字符串进行处理。java中关于json处理的jar包比较多的是json-lib-XXX.jar,这个包到jdk1.5之后就没有见到新的版本了。所以我使用的是alibaba出的fastjson。
下面贴出返回的json字符串代码:
{"total":249,"more":true,"limit":20,"items":["\n \n <div class=\"result\">\n ... ... </div>\n <p>吴邪戴上了三叔的人皮面具,以三叔的身份整顿了三叔在长沙的产业,三叔手下盘口的马仔无不归顺。吴邪、潘子和小花等人兵分三路,从杭州、长沙和北京出发前往广西。在广...</p>\n </div>\n </div>\n"]}
可以看到,大量显示的数据都在items中,接下来
JSONObject json = JSON.parseObject(html); //将JSON类型的String语句转为JSON Object
JSONObject jItem = json.getJSONObject("items");
上文中,html为返回的json字符串。这样就得到了items的值。
["\n \n <div class=\"result\">\n ... ... </div>\n </div>\n"]
但是,这其中包含换行符和转义字符“\”,还有首尾的中括号,双引号。
String items = j.toString();
items = items.replace("\\n", "");
items = items.replace("\\","");
items = items.substring(2, items.length()-2);
Document docAdd = Jsoup.parse(items); //解析成为document
results = docAdd.select("div.result"); //得到Elements,成功解析
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2016-12-06 · 百度知道合伙人官方认证企业
育知同创教育
1【专注:Python+人工智能|Java大数据|HTML5培训】 2【免费提供名师直播课堂、公开课及视频教程】 3【地址:北京市昌平区三旗百汇物美大卖场2层,微信公众号:yuzhitc】
向TA提问
关注
展开全部
httpclient 使用这个json字符串,遇到不规则的字符串的话就单独拆分,组装成规则的字符串就行了。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询