异常一、
org.codehaus.jackson.map.JsonMappingException: No suitable constructor found for type [simple type, class com.douban.book.Book$Rating]: can not instantiate from JSON object (need to add/enable type information?)at [Source: java.io.StringReader@1cbfe9d; line: 1, column: 12] (through reference chain: com.douban.book.Book["rating"])at org.codehaus.jackson.map.JsonMappingException.from(JsonMappingException.java:163)at org.codehaus.jackson.map.deser.BeanDeserializer.deserializeFromObjectUsingNonDefault(BeanDeserializer.java:740)at org.codehaus.jackson.map.deser.BeanDeserializer.deserializeFromObject(BeanDeserializer.java:683)at org.codehaus.jackson.map.deser.BeanDeserializer.deserialize(BeanDeserializer.java:580)at org.codehaus.jackson.map.deser.SettableBeanProperty.deserialize(SettableBeanProperty.java:299)at org.codehaus.jackson.map.deser.SettableBeanProperty$MethodProperty.deserializeAndSet(SettableBeanProperty.java:414)at org.codehaus.jackson.map.deser.BeanDeserializer.deserializeFromObject(BeanDeserializer.java:697)at org.codehaus.jackson.map.deser.BeanDeserializer.deserialize(BeanDeserializer.java:580)at org.codehaus.jackson.map.ObjectMapper._readMapAndClose(ObjectMapper.java:2723)at org.codehaus.jackson.map.ObjectMapper.readValue(ObjectMapper.java:1854)at com.util.HttpIO.doPost(HttpIO.java:33)at com.douban.book.GetBookInfo.main(GetBookInfo.java:11)

在定义Rating内部类的时候没有使用static修饰

异常二、

org.codehaus.jackson.map.exc.UnrecognizedPropertyException: Unrecognized field "publisher" (Class com.douban.book.Book), not marked as ignorableat [Source: java.io.StringReader@1b8f864; line: 1, column: 852] (through reference chain: com.douban.book.Book["publisher"])at org.codehaus.jackson.map.exc.UnrecognizedPropertyException.from(UnrecognizedPropertyException.java:53)at org.codehaus.jackson.map.deser.StdDeserializationContext.unknownFieldException(StdDeserializationContext.java:267)at org.codehaus.jackson.map.deser.std.StdDeserializer.reportUnknownProperty(StdDeserializer.java:649)at org.codehaus.jackson.map.deser.std.StdDeserializer.handleUnknownProperty(StdDeserializer.java:635)at org.codehaus.jackson.map.deser.BeanDeserializer.handleUnknownProperty(BeanDeserializer.java:1355)at org.codehaus.jackson.map.deser.BeanDeserializer.deserializeFromObject(BeanDeserializer.java:717)at org.codehaus.jackson.map.deser.BeanDeserializer.deserialize(BeanDeserializer.java:580)at org.codehaus.jackson.map.ObjectMapper._readMapAndClose(ObjectMapper.java:2723)at org.codehaus.jackson.map.ObjectMapper.readValue(ObjectMapper.java:1854)at com.util.HttpIO.doPost(HttpIO.java:33)at com.douban.book.GetBookInfo.main(GetBookInfo.java:11)

publisher变量没有定义或者定义成private但是没有get set方法

异常三、

org.codehaus.jackson.map.JsonMappingException: Can not deserialize instance of java.lang.String out of START_ARRAY tokenat [Source: java.io.StringReader@1112783; line: 1, column: 75] (through reference chain: com.douban.book.Book["author"])at org.codehaus.jackson.map.JsonMappingException.from(JsonMappingException.java:163)at org.codehaus.jackson.map.deser.StdDeserializationContext.mappingException(StdDeserializationContext.java:219)at org.codehaus.jackson.map.deser.std.StringDeserializer.deserialize(StringDeserializer.java:44)at org.codehaus.jackson.map.deser.std.StringDeserializer.deserialize(StringDeserializer.java:13)at org.codehaus.jackson.map.deser.SettableBeanProperty.deserialize(SettableBeanProperty.java:299)at org.codehaus.jackson.map.deser.SettableBeanProperty$MethodProperty.deserializeAndSet(SettableBeanProperty.java:414)at org.codehaus.jackson.map.deser.BeanDeserializer.deserializeFromObject(BeanDeserializer.java:697)at org.codehaus.jackson.map.deser.BeanDeserializer.deserialize(BeanDeserializer.java:580)at org.codehaus.jackson.map.ObjectMapper._readMapAndClose(ObjectMapper.java:2723)at org.codehaus.jackson.map.ObjectMapper.readValue(ObjectMapper.java:1854)at com.util.HttpIO.doPost(HttpIO.java:33)at com.douban.book.GetBookInfo.main(GetBookInfo.java:11)

author应该是List<String>类型,定义成了String类型

---------------------------------分割线-------------------------------------------------

重要的几个类:

解析json方向

//解析器

org.codehaus.jackson.map.ObjectMapper;

//解析配置

org.codehaus.jackson.map.DeserializationConfig;

objectMapper.setDateFormat(new SimpleDateFormat("yyyy-MM-dd"));

objectMapper.setDeserializationConfig(objectMapper.getDeserializationConfig().without(DeserializationConfig.Feature.FAIL_ON_UNKNOWN_PROPERTIES))

关于上面这个属性

关于jackson的DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES

-------------------------------------------------------------------------------------------------

注意使用Jackson解析json的一些方法和原则:

{}全部需要定义成类

[] 全部需要定义成List<>

内部类需要定义成static

所有的key都是value变量名对应

还有就是一些方法需要学习

http://itindex.net/detail/51074-java-%E5%88%A9%E7%94%A8-jackson

http://developers.douban.com/wiki/?title=guide

com.util.HttpIO类

package com.util;import java.io.IOException;import org.apache.http.HttpResponse;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.util.EntityUtils;
import org.codehaus.jackson.map.ObjectMapper;import com.douban.book.Book;public class HttpIO
{public static void doPost(final String url, final String body){HttpClient httpclient = new DefaultHttpClient();ObjectMapper mapper = new ObjectMapper();HttpPost post = new HttpPost(url);try{HttpResponse result = httpclient.execute(post);if (result.getStatusLine().getStatusCode() == 200){String str = EntityUtils.toString(result.getEntity());System.out.println(str);Book book = mapper.readValue(str, Book.class);System.out.println(book);}}catch(ClientProtocolException e){e.printStackTrace();}catch(IOException e){e.printStackTrace();}}
}

  

package com.douban.book;import com.util.HttpIO;//http://api.douban.com/v2/book/1220562
public class GetBookInfo
{public static void main(String[] args){HttpIO.doPost("http://api.douban.com/v2/book/1220562",null);}
}

  

package com.douban.book;import java.util.List;public class Book
{private String publisher;public String id;private String alt;private Rating rating;private List<String> author;private String alt_title;private Images images;private String title;private String mobile_link;private String summary;private Attrs attrs;private List<Tags> tags;private String subtitle;private String pubdate;private String isbn10;private String isbn13;private String url;private String author_intro;private String price;private String origin_title;private String binding;private String catalog;private String pages;private String image;private List<String> translator;public List<String> getTranslator(){return translator;}public void setTranslator(List<String> translator){this.translator = translator;}public String getImage(){return image;}public void setImage(String image){this.image = image;}public Images getImages(){return images;}public void setImages(Images images){this.images = images;}public String getBinding(){return binding;}public void setBinding(String binding){this.binding = binding;}public String getCatalog(){return catalog;}public void setCatalog(String catalog){this.catalog = catalog;}public String getPages(){return pages;}public void setPages(String pages){this.pages = pages;}static class Images{private String small;private String large;private String medium;public String getSmall(){return small;}public void setSmall(String small){this.small = small;}public String getLarge(){return large;}public void setLarge(String large){this.large = large;}public String getMedium(){return medium;}public void setMedium(String medium){this.medium = medium;}}public String getOrigin_title(){return origin_title;}public void setOrigin_title(String origin_title){this.origin_title = origin_title;}public Book(){}public Book(String str){}public String getPubdate(){return pubdate;}public void setPubdate(String pubdate){this.pubdate = pubdate;}public String getIsbn10(){return isbn10;}public void setIsbn10(String isbn10){this.isbn10 = isbn10;}public String getIsbn13(){return isbn13;}public void setIsbn13(String isbn13){this.isbn13 = isbn13;}public String getUrl(){return url;}public void setUrl(String url){this.url = url;}public String getAuthor_intro(){return author_intro;}public void setAuthor_intro(String author_intro){this.author_intro = author_intro;}public String getPrice(){return price;}public void setPrice(String price){this.price = price;}public String getSubtitle(){return subtitle;}public void setSubtitle(String subtitle){this.subtitle = subtitle;}public String getAlt(){return alt;}public void setAlt(String alt){this.alt = alt;}public Rating getRating(){return rating;}public void setRating(Rating rating){this.rating = rating;}public List<String> getAuthor(){return author;}public void setAuthor(List<String> author){this.author = author;}public String getAlt_title(){return alt_title;}public void setAlt_title(String alt_title){this.alt_title = alt_title;}public String getTitle(){return title;}public void setTitle(String title){this.title = title;}public String getMobile_link(){return mobile_link;}public void setMobile_link(String mobile_link){this.mobile_link = mobile_link;}public String getSummary(){return summary;}public void setSummary(String summary){this.summary = summary;}public Attrs getAttrs(){return attrs;}public void setAttrs(Attrs attrs){this.attrs = attrs;}public List<Tags> getTags(){return tags;}public void setTags(List<Tags> tags){this.tags = tags;}static private class Tags{private String count;private String name;private String title;public String getTitle(){return title;}public void setTitle(String title){this.title = title;}public String getCount(){return count;}public void setCount(String count){this.count = count;}public String getName(){return name;}public void setName(String name){this.name = name;}}static private class Attrs{private List<String> publiser;private List<String> pubdate;private List<String> author;private List<String> price;private List<String> title;private List<String> binding;private List<String> translator;private List<String> pages;public List<String> getPubliser(){return publiser;}public void setPubliser(List<String> publiser){this.publiser = publiser;}public List<String> getPubdate(){return pubdate;}public void setPubdate(List<String> pubdate){this.pubdate = pubdate;}public List<String> getAuthor(){return author;}public void setAuthor(List<String> author){this.author = author;}public List<String> getPrice(){return price;}public void setPrice(List<String> price){this.price = price;}public List<String> getTitle(){return title;}public void setTitle(List<String> title){this.title = title;}public List<String> getBinding(){return binding;}public void setBinding(List<String> binding){this.binding = binding;}public List<String> getTranslator(){return translator;}public void setTranslator(List<String> translator){this.translator = translator;}public List<String> getPages(){return pages;}public void setPages(List<String> pages){this.pages = pages;}}static class Rating{private int max;private String average;private int numRaters;private int min;public int getMax(){return max;}public void setMax(int max){this.max = max;}public String getAverage(){return average;}public void setAverage(String average){this.average = average;}public int getNumRaters(){return numRaters;}public void setNumRaters(int numRaters){this.numRaters = numRaters;}public int getMin(){return min;}public void setMin(int min){this.min = min;}}public String getPublisher(){return publisher;}public void setPublisher(String publisher){this.publisher = publisher;}}

{"rating": {"max": 10, "numRaters": 345, "average": "7.0", "min": 0 }, "subtitle": "", "author": [ "[日] 片山恭一" ], "pubdate": "2005-1", "tags": [ { "count": 133, "name": "片山恭一", "title": "片山恭一" }, { "count": 62, "name": "日本", "title": "日本" }, { "count": 60, "name": "日本文学", "title": "日本文学" }, { "count": 38, "name": "小说", "title": "小说" }, { "count": 32, "name": "满月之夜白鲸现", "title": "满月之夜白鲸现" }, { "count": 15, "name": "爱情", "title": "爱情" }, { "count": 8, "name": "純愛", "title": "純愛" }, { "count": 8, "name": "外国文学", "title": "外国文学" } ], "origin_title": "", "image": "http://img3.douban.com/mpic/s1747553.jpg", "binding": "平装", "translator": [ "豫人" ], "catalog": " ", "pages": "180", "images": { "small": "http://img3.douban.com/spic/s1747553.jpg", "large": "http://img3.douban.com/lpic/s1747553.jpg", "medium": "http://img3.douban.com/mpic/s1747553.jpg" }, "alt": "http://book.douban.com/subject/1220562/", "id": "1220562", "publisher": "青岛出版社", "isbn10": "7543632608", "isbn13": "9787543632608", "title": "满月之夜白鲸现", "url": "http://api.douban.com/v2/book/1220562", "alt_title": "", "author_intro": "", "summary": "那一年,是听莫扎特、钓鲈鱼和家庭破裂的一年。说到家庭破裂,母亲怪自己当初没有找到好男人,父亲则认为当时是被狐狸精迷住了眼,失常的是母亲,但出问题的是父亲……。", "price": "15.00元" }

对于Book类当中的Bean变量 可以定义成private的 然后赋予get set方法,也可以直接定义成public的

转载于:https://www.cnblogs.com/wuxinliulei/p/4912824.html

jackson学习----解析豆瓣的图书信息相关推荐

  1. Python Scrapy爬虫实战(1):豆瓣网站图书信息案例- Scrapy初体验

    Scrapy,Python开发的一个快速.高层次的屏幕抓取和web抓取框架,用于抓取web站点并从页面中提取结构化的数据.Scrapy用途广泛,可以用于数据挖掘.监测和自动化测试.Scrapy吸引人的 ...

  2. python 实现用ISBN从豆瓣获取图书信息

    今天写了一个从豆瓣获取图书信息并返回json数据的小程序,记录一下. 豆瓣API有一个地址https://api.douban.com/v2/book/isbn/9787115404831 可以通过更 ...

  3. Python爬虫入门 | 4 爬取豆瓣TOP250图书信息

      先来看看页面长啥样的:https://book.douban.com/top250   我们将要爬取哪些信息:书名.链接.评分.一句话评价--   1. 爬取单个信息 我们先来尝试爬取书名,利用之 ...

  4. Python爬虫(一)——豆瓣下图书信息

    爬虫目的: 随着近年互联网的发展,网络上的信息飞速数量增长.在庞大的数据面前想要获得 期望的信息往往如同大海捞针.通过合理的筛选,在百万甚至数亿计的数据中找到所需 信息,无疑有着非常大的意义. 在豆瓣 ...

  5. python豆瓣图书源代码没有title怎么办_Python爬虫(一)——豆瓣下图书信息

    1 wber@wber:~/桌面$ tree -h 数据2 数据3 ├── [4.0K] 经管4 │   ├── [ 41K] 策划.csv5 │   ├── [ 79K] 创业.csv6 │   ├ ...

  6. 爬虫 | 百行代码爬取14.5W条豆瓣图书信息

    前言 先上一波爬取的结果: 数据库中部分截图 实战 引入类库 import requests from bs4 import BeautifulSoup from requests.exception ...

  7. Python爬虫(入门+进阶)学习笔记 1-4 使用Xpath解析豆瓣短评

    本节课程主要介绍解析神器Xpath是什么.Xpath如何安装及使用,以及使用实际的例子讲解Xpath如何解析豆瓣短评的网页并获取数据. 解析神器Xpath Xpath的使用 实战环节 解析神器Xpat ...

  8. 通过豆瓣Api,输入ISBN获取图书信息

    在本篇文章中,主要是通过豆瓣API实现获取图书信息的小功能. 一. 豆瓣API能干什么?   参考链接:[url]http://www.douban.com/service/ [/url] 豆瓣API ...

  9. 爬虫入门一:BeautifulSoup解析豆瓣即将上映的电影信息

    爬虫入门一 一直很想学习一下爬虫,今天忙里偷闲看了一篇教程博客之后开始入门学习,很感谢教程作者的讲解与分享,文末附教程博客链接. BeautifulSoup解析豆瓣即将上映的电影信息 python代码 ...

最新文章

  1. 2022-2028年中国相变蜡行业市场前瞻与投资战略规划分析报告
  2. 快速提升网站收录量的技巧有哪些?
  3. python装饰器类-Python 装饰器、类装饰器、属性装饰器
  4. 一种集各种优点于一身的技术面试方式--转
  5. halcon算子盘点:Chapter 13:对象、Chapter 14 区域
  6. Spring Security——集成Spring Session、Redis和JSON序列化解决方案
  7. Leet Code OJ 189. Rotate Array [Difficulty: Easy]
  8. C++ 基类和派生类的构造函数
  9. 如何保护.net中的dll文件(防破解、反编译)
  10. synchronized关键字理解
  11. 检查java_如何检查Java版本?
  12. Python+OpenCV:基于色彩空间转换的目标跟踪
  13. SQL Serevr 2012 安装教程
  14. kafka_2.12-3.2.0安装包快速下载地址分享
  15. Kmeans参数n_clusters_labels_centers_
  16. 交叉编译openssl
  17. 开源共轴双桨无人机 Tdrone 软硬件全部在 GitHub 开源
  18. Linux究竟值多少钱?
  19. 小白上路之javascript数组的介绍
  20. 这位智商奇高的超级天才去了:他简直活出了别人八辈子的精彩!

热门文章

  1. python实现手写识别系统
  2. matlab转换为部分分式,用MATLAB的residuez函数,求出下列各式的部分分式展开式和反变换f[n]。 说明:residuez函数...
  3. 【Codeforces249D】Donkey and Stars
  4. ogre3d git地址
  5. 【K-Means】基于经纬度的城市聚类
  6. 谷歌地球最新host_高大上,谷歌黑科技让你看够
  7. 随机点菜demo(纯HTML、CSS、JS)
  8. 智慧地球, 智慧城市
  9. python continue语句作用_continue语句只用于循环语句中,它的作用是什么
  10. matlab保留n位有效数字