关于正则表达式和json解析的问题

dongtao1010 2016-03-30 11:27:23
1,首先是关于正则表达式的问题
我想从以下链接中http://m.zongheng.com/h5/chapter/list?bookid=531009
解析出如下图片上那个1801这个数字,记住是数字,旁边的两个汉字不要


2,另外一个题目是关于json解析的,我下面的一段代码运行有误,麻烦高手帮忙看一下,谢谢了!!!
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;

import javax.swing.text.html.parser.Entity;

import com.fasterxml.jackson.core.JsonEncoding;
import com.fasterxml.jackson.core.JsonGenerator;
import com.fasterxml.jackson.core.JsonParseException;
import com.fasterxml.jackson.databind.JsonMappingException;
import com.fasterxml.jackson.databind.ObjectMapper;

public class JacksonTest {
private ObjectMapper objectMapper = new ObjectMapper();

private static final String json = "{" +
"\"ajaxResult\":{\"code\":1,\"message\":\"有数据\"}," +
"\"chapterlist\":{\"asc\":0," +
"\"chapterCount\":10," +
"\"chapters\":" +
"[{\"chapterId\":25492068,\"chapterName\":\"正文 第一章:地震\",\"level\":0,\"orderNum\":1,\"tomeId\":1233505}," +
"{\"chapterId\":25686707,\"chapterName\":\"正文 第二章:地下\",\"level\":0,\"orderNum\":2,\"tomeId\":1233505}," +
"{\"chapterId\":25740084,\"chapterName\":\"正文 第三章:传承\",\"level\":0,\"orderNum\":3,\"tomeId\":1233505}]," +
"\"pageNum\":1," +
"\"pageSize\":10}}";

public void readJson2Map(){

try {
Jsonp jsonData = objectMapper.readValue(json, Jsonp.class); //一直显示这句报错,但是没有抛出具体异常
System.out.println(jsonData.getAjaxResult().getCode());
// System.out.println(jsonData);
} catch (JsonParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (JsonMappingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public static void main(String[] args){
JacksonTest test = new JacksonTest();
test.readJson2Map();

}
}


我自己定义的实体类如下

public class Jsonp {

private AjaxResult ajaxResult;
private ChapterList chapterList;
public AjaxResult getAjaxResult() {
return ajaxResult;
}
public void setAjaxResult(AjaxResult ajaxResult) {
this.ajaxResult = ajaxResult;
}
public ChapterList getChapterList() {
return chapterList;
}
public void setChapterList(ChapterList chapterList) {
this.chapterList = chapterList;
}


}


import java.util.List;


public class ChapterList {

private int asc;
private int chapterCount;
private List<Chapters> chapters;
private int pageNum;
private int pageSize;
public int getAsc() {
return asc;
}
public void setAsc(int asc) {
this.asc = asc;
}
public int getChapterCount() {
return chapterCount;
}
public void setChapterCount(int chapterCount) {
this.chapterCount = chapterCount;
}
public List<Chapters> getChapters() {
return chapters;
}
public void setChapters(List<Chapters> chapters) {
this.chapters = chapters;
}
public int getPageNum() {
return pageNum;
}
public void setPageNum(int pageNum) {
this.pageNum = pageNum;
}
public int getPageSize() {
return pageSize;
}
public void setPageSize(int pageSize) {
this.pageSize = pageSize;
}


}



public class Chapters {

private int chapterId;
private String chapterName;
private int level;
private int orderNum;
private int tomeId;
public int getChapterId() {
return chapterId;
}
public void setChapterId(int chapterId) {
this.chapterId = chapterId;
}
public String getChapterName() {
return chapterName;
}
public void setChapterName(String chapterName) {
this.chapterName = chapterName;
}
public int getLevel() {
return level;
}
public void setLevel(int level) {
this.level = level;
}
public int getOrderNum() {
return orderNum;
}
public void setOrderNum(int orderNum) {
this.orderNum = orderNum;
}
public int getTomeId() {
return tomeId;
}
public void setTomeId(int tomeId) {
this.tomeId = tomeId;
}


}



public class AjaxResult {

private int code;
private String message;
public int getCode() {
return code;
}
public void setCode(int code) {
this.code = code;
}
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}

public String toString(){
return this.code +" "+ this.message;
}
}
...全文
306 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
imfang 2016-03-31
  • 打赏
  • 举报
回复
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Test {
	public static void main(String[] args) {
		String s="<a>目录<span class=\"sf\">(共1804章)</span></a>";
		Pattern p=Pattern.compile(">\\(共(\\d+)章\\)<");
		Matcher m=p.matcher(s);
		if(m.find()){
			System.out.println(m.group(1));
		}
	}
}
运行结果:
1804
家里敷泥呀 2016-03-31
  • 打赏
  • 举报
回复
第二个问题,没有导入Jsonp,可能缺少jar包
爱睡觉的阿狸 2016-03-31
  • 打赏
  • 举报
回复
我就第一个问题谈谈。我个人觉得第一个问题用正则是没必要的,反而把简单问题复杂化,比如你可以这样解决:
String s = "共1008章";
		s = s.substring(1, s.length() - 1);
		System.out.println(s);
这样就搞定了,是不是很轻松愉快又不用折腾啥正则呢?
ZiglarXie 2016-03-31
  • 打赏
  • 举报
回复
第二个问题 Jsonp是你自己写的类 并不是 json jar中类 所以 那个getValue方法根本不会返回你的类对象
  • 打赏
  • 举报
回复
Pattern p=Pattern.compile("(\\d+)");   
		Matcher m=p.matcher("第234章");   
		while(m.find()){  
		System.out.println(m.group());   
		}  
friendmine 2016-03-30
  • 打赏
  • 举报
回复
1. 大概的写法 .*目录.*(\d+).* 应该能匹配到相应的 数字。 2.把错误贴出来吧,应该是个很简单的问题,自己努力一下就成了。

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧