- 浏览: 3513954 次
- 性别:
- 来自: 大连
博客专栏
-
使用Titanium Mo...
浏览量:37478
-
Cordova 3.x入门...
浏览量:604304
-
常用Java开源Libra...
浏览量:678049
-
搭建 CentOS 6 服...
浏览量:87250
-
Spring Boot 入...
浏览量:399811
-
基于Spring Secu...
浏览量:69066
-
MQTT入门
浏览量:90468
文章分类
最新评论
-
afateg:
阿里云的图是怎么画出来的?用什么工具?
各云服务平台的架构图 -
cbn_1992:
博主,采用jdbctoken也就是数据库形式之后,反复点击获取 ...
Spring Security OAuth2 Provider 之 数据库存储 -
ipodao:
写的很是清楚了,我找到一份中文协议:https://mcxia ...
MQTT入门(6)- 主题Topics -
Cavani_cc:
还行
MQTT入门(6)- 主题Topics -
fexiong:
博主,能否提供完整源码用于学习?邮箱:2199611997@q ...
TensorFlow 之 构建人物识别系统
Jackson:Java平台的JSON解析器。
版本:
jackson-databind-2.8.8.1.jar
jackson-core-2.8.8.jar
jackson-annotations-2.8.8.jar
1.基本
字符串和对象间的转换
字符串和数组间的转换
字符串和集合间的转换
其他
2.设置
SerializationFeature
DeserializationFeature
3.类型
TypeReference
4.注解
@JsonProperty
@JsonIgnore
@JsonIgnoreProperties
@JsonCreator
@JsonAnyGetter
@JsonAnySetter
@JsonSerialize
@JsonDeserialize
@JsonView
5.类信息
JsonTypeInfo.Id.CLASS
JsonTypeInfo.Id.CUSTOM
JsonTypeInfo.As.WRAPPER_OBJECT
JsonTypeInfo.As.EXTERNAL_PROPERTY
6.抽象类
@JsonTypeInfo(use=Id.CLASS)
mapper.enableDefaultTyping();
@JsonSubTypes
参考:
http://qiita.com/opengl-8080/items/b613b9b3bc5d796c840c
http://www.baeldung.com/jackson
版本:
jackson-databind-2.8.8.1.jar
jackson-core-2.8.8.jar
jackson-annotations-2.8.8.jar
1.基本
字符串和对象间的转换
private static void object2String() throws JsonProcessingException { People p = new People(); p.id = 101; p.name = "rensanning101"; ObjectMapper mapper = new ObjectMapper(); String json = mapper.writeValueAsString(p); System.out.println(json); // {"id":101,"name":"rensanning101"} }
private static void string2Object() throws JsonParseException, JsonMappingException, IOException { String json = "{\"id\":102, \"name\":\"rensanning102\"}"; ObjectMapper mapper = new ObjectMapper(); People p = mapper.readValue(json, People.class); System.out.println(p); // People [id=102, name=rensanning102] }
static class People { public int id; public String name; @Override public String toString() { return "People [id=" + id + ", name=" + name +"]"; } }
字符串和数组间的转换
private static void objectArray2String() throws JsonProcessingException { People p1 = new People(); p1.id = 103; p1.name = "rensanning103"; People p2 = new People(); p2.id = 104; p2.name = "rensanning104"; People[] p = new People[2]; p[0] = p1; p[1] = p2; ObjectMapper mapper = new ObjectMapper(); String json = mapper.writeValueAsString(p); System.out.println(json); // [{"id":103,"name":"rensanning103"},{"id":104,"name":"rensanning104"}] }
private static void string2ObjectArray() throws JsonParseException, JsonMappingException, IOException { String json = "[{\"id\":105,\"name\":\"rensanning105\"},{\"id\":106,\"name\":\"rensanning106\"}]"; ObjectMapper mapper = new ObjectMapper(); People[] pp = mapper.readValue(json, People[].class); System.out.println(pp); }
字符串和集合间的转换
private static void objectList2String() throws JsonProcessingException { People p1 = new People(); p1.id = 107; p1.name = "rensanning107"; People p2 = new People(); p2.id = 108; p2.name = "rensanning108"; List<People> p = new ArrayList<People>(); p.add(p1); p.add(p2); ObjectMapper mapper = new ObjectMapper(); String json = mapper.writeValueAsString(p); System.out.println(json); // [{"id":107,"name":"rensanning107"},{"id":108,"name":"rensanning108"}] }
private static void string2ObjectList() throws JsonParseException, JsonMappingException, IOException { String json = "[{\"id\":109,\"name\":\"rensanning109\"},{\"id\":110,\"name\":\"rensanning110\"}]"; ObjectMapper mapper = new ObjectMapper(); @SuppressWarnings("unchecked") List<People> pp = mapper.readValue(json, List.class); System.out.println(pp); // [{id=109, name=rensanning109}, {id=110, name=rensanning110}] }
其他
private static void readValueFromFile() throws JsonParseException, JsonMappingException, IOException { String path = new File(".").getAbsoluteFile().getParent(); File file = new File(path +"/people.json"); ObjectMapper mapper = new ObjectMapper(); People people = mapper.readValue(file, People.class); System.out.println(people); // People [id=111, name=rensanning111] }
引用
{"id":111,"name":"rensanning111"}
private static void object2StringWithProtectedField() throws JsonProcessingException { PeopleField p = new PeopleField(); p.id = 112; p.name = "rensanning112"; p.setGender("male"); ObjectMapper mapper = new ObjectMapper(); String json = mapper.writeValueAsString(p); System.out.println(json); // {"id":112,"name":"rensanning112","gender":"male"} }
static class PeopleField { // public字段不需要Getter/Setter public int id; public String name; // protected/private字段需要Getter/Setter protected String gender; public String getGender() { return gender; } public void setGender(String gender) { this.gender = gender; } @Override public String toString() { return "PeopleField [id=" + id + ", name=" + name + ", gender=" + gender +"]"; } }
2.设置
SerializationFeature
private static void settingsSerial() throws JsonProcessingException { People p = new People(); p.id = 201; p.name = "rensanning201"; ObjectMapper mapper = new ObjectMapper(); // 通过enable() / disable()方法设置 // https://github.com/FasterXML/jackson-databind/wiki/Serialization-Features mapper.enable(SerializationFeature.INDENT_OUTPUT); String json = mapper.writeValueAsString(p); System.out.println(json); // { // "id" : 201, // "name" : "rensanning201" // } }
DeserializationFeature
private static void settingsDeserial() throws JsonParseException, JsonMappingException, IOException { String json = "{\"id\":202, \"name\":\"rensanning202\", \"ttt\":\"123456\"}"; ObjectMapper mapper = new ObjectMapper(); // 通过enable() / disable()方法设置 // https://github.com/FasterXML/jackson-databind/wiki/Deserialization-Features // 如果没有以下设置会报错:UnrecognizedPropertyException: Unrecognized field "ttt" mapper.disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES); People p = mapper.readValue(json, People.class); System.out.println(p); // People [id=202, name=rensanning202] }
3.类型
TypeReference
private static void deserialTypeRef() throws JsonParseException, JsonMappingException, IOException { String json = "[{\"id\":301, \"name\":\"rensanning301\"}, {\"id\":302, \"name\":\"rensanning302\"}]"; ObjectMapper mapper = new ObjectMapper(); TypeReference<List<People>> valueTypeRef = new TypeReference<List<People>>() {}; List<People> list = mapper.readValue(json, valueTypeRef); System.out.println(list); // [People [id=301, name=rensanning301], People [id=302, name=rensanning302]] }
4.注解
@JsonProperty
private static void annotationJsonProperty() throws JsonProcessingException { PeopleJsonProperty p = new PeopleJsonProperty(); p.id = 401; p.name = "rensanning 401 JsonProperty"; ObjectMapper mapper = new ObjectMapper(); String json = mapper.writeValueAsString(p); System.out.println(json); // {"id":401,"newName":"rensanning 401 JsonProperty"} }
static class PeopleJsonProperty { public int id; @JsonProperty("newName") public String name; @Override public String toString() { return "PeopleJsonProperty [id=" + id + ", name=" + name +"]"; } }
@JsonIgnore
private static void annotationJsonIgnore() throws JsonProcessingException { PeopleJsonIgnore p = new PeopleJsonIgnore(); p.id = 402; p.name = "rensanning 402 JsonIgnore"; ObjectMapper mapper = new ObjectMapper(); String json = mapper.writeValueAsString(p); System.out.println(json); // {"id":402} }
static class PeopleJsonIgnore { public int id; @JsonIgnore public String name; @Override public String toString() { return "PeopleJsonIgnore [id=" + id + ", name=" + name +"]"; } }
@JsonIgnoreProperties
private static void annotationJsonIgnoreProperties() throws IOException { PeopleJsonIgnoreProperties p = new PeopleJsonIgnoreProperties(); p.id = 404; p.name = "rensanning 404 JsonIgnoreProperties"; p.age = 36; ObjectMapper mapper = new ObjectMapper(); String json = mapper.writeValueAsString(p); System.out.println(json); // {"name":"rensanning 404 JsonIgnoreProperties"} // ignoreUnknown=true String json2 = "{\"id\":405, \"name\":\"rensanning405\", \"ttt\":\"123456\"}"; ObjectMapper mapper2 = new ObjectMapper(); PeopleIgnoreUnknown p2 = mapper2.readValue(json2, PeopleIgnoreUnknown.class); System.out.println(p2); // PeopleIgnoreUnknown [id=405, name=rensanning405] }
@JsonIgnoreProperties({"id", "age"}) static class PeopleJsonIgnoreProperties { public int id; public String name; public int age; @Override public String toString() { return "PeopleJsonIgnoreProperties [id=" + id + ", name=" + name + ", age=" + age +"]"; } }
@JsonIgnoreProperties(ignoreUnknown=true) static class PeopleIgnoreUnknown { public int id; public String name; @Override public String toString() { return "PeopleIgnoreUnknown [id=" + id + ", name=" + name +"]"; } }
@JsonCreator
private static void annotationJsonCreator() throws JsonParseException, JsonMappingException, IOException { String json = "{\"id\":406, \"name\":\"rensanning 406 JsonCreator\"}"; // 默认采用无参构造函数。 ObjectMapper mapper = new ObjectMapper(); // 如果没有无参构造函数需要用@JsonCreator PeopleJsonCreator p1 = mapper.readValue(json, PeopleJsonCreator.class); System.out.println(p1); // PeopleJsonCreator [id=406, name=rensanning 406 JsonCreator] // @JsonCreator不局限于构造函数 PeopleJsonCreatorFactory p2 = mapper.readValue(json, PeopleJsonCreatorFactory.class); System.out.println(p2); // PeopleJsonCreatorFactory [id=406, name=rensanning 406 JsonCreator] }
static class PeopleJsonCreator { public int id; public String name; @JsonCreator private PeopleJsonCreator(@JsonProperty("id") int id, @JsonProperty("name") String name) { this.id = id; this.name = name; } @Override public String toString() { return "PeopleJsonCreator [id=" + id + ", name=" + name +"]"; } }
static class PeopleJsonCreatorFactory { public int id; public String name; @JsonCreator public static PeopleJsonCreatorFactory create(@JsonProperty("id") int id, @JsonProperty("name") String name) { return new PeopleJsonCreatorFactory(id, name); } private PeopleJsonCreatorFactory(int id, String name) { this.id = id; this.name = name; } @Override public String toString() { return "PeopleJsonCreatorFactory [id=" + id + ", name=" + name +"]"; } }
@JsonAnyGetter
private static void annotationJsonAnyGetter() throws JsonProcessingException { PepoleJsonAnyGetter p = new PepoleJsonAnyGetter(); p.id = 407; p.name = "rensanning 407 JsonAnyGetter"; p.properties.put("attr1", "val1"); p.properties.put("attr2", "val2"); ObjectMapper mapper = new ObjectMapper(); String json = mapper.writeValueAsString(p); System.out.println(json); // {"id":407,"name":"rensanning 407 JsonAnyGetter","attr2":"val2","attr1":"val1"} }
static class PepoleJsonAnyGetter { public int id; public String name; private Map<String, String> properties = new HashMap<String, String>(); @JsonAnyGetter public Map<String, String> getProperties() { return properties; } }
@JsonAnySetter
private static void annotationJsonAnySetter() throws JsonProcessingException, IOException { String json = "{\"id\":408, \"name\":\"rensanning 408 JsonAnySetter\",\"attr2\":\"val2\",\"attr1\":\"val1\"}"; ObjectMapper mapper = new ObjectMapper(); PepoleJsonAnySetter p = mapper.readValue(json, PepoleJsonAnySetter.class); System.out.println(p); }
static class PepoleJsonAnySetter { public int id; public String name; private Map<String, String> properties = new HashMap<String, String>(); @JsonAnySetter public void add(String key, String value) { properties.put(key, value); } }
@JsonSerialize
private static void annotationJsonSerialize() throws JsonProcessingException, ParseException { SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss"); String toParse = "2017-05-03 12:30:00"; Date date = df.parse(toParse); PeopleJsonSerialize p = new PeopleJsonSerialize(); p.id = 409; p.name = "rensanning 409 JsonSerialize"; p.eventDate = date; ObjectMapper mapper = new ObjectMapper(); String json = mapper.writeValueAsString(p); System.out.println(json); // {"id":409,"name":"rensanning 409 JsonSerialize","eventDate":"2017-05-03 12:30:00"} }
static class PeopleJsonSerialize { public int id; public String name; @JsonSerialize(using = CustomDateSerializer.class) public Date eventDate; } @SuppressWarnings("serial") static class CustomDateSerializer extends StdSerializer<Date> { private static SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss"); public CustomDateSerializer() { this(null); } public CustomDateSerializer(Class<Date> t) { super(t); } @Override public void serialize(Date value, JsonGenerator gen, SerializerProvider arg2) throws IOException, JsonProcessingException { gen.writeString(formatter.format(value)); } }
@JsonDeserialize
private static void annotationJsonDeserialize() throws JsonParseException, JsonMappingException, IOException { String json = "{\"id\":410, \"name\":\"rensanning 410 JsonDeserialize\",\"eventDate\":\"20-12-2014 02:30:00\"}"; ObjectMapper mapper = new ObjectMapper(); PeopleJsonDeserialize p = mapper.readValue(json, PeopleJsonDeserialize.class); System.out.println(p); }
static class PeopleJsonDeserialize { public int id; public String name; @JsonDeserialize(using = CustomDateDeserializer.class) public Date eventDate; } @SuppressWarnings("serial") static class CustomDateDeserializer extends StdDeserializer<Date> { private static SimpleDateFormat formatter = new SimpleDateFormat("dd-MM-yyyy hh:mm:ss"); public CustomDateDeserializer() { this(null); } public CustomDateDeserializer(Class<?> vc) { super(vc); } @Override public Date deserialize(JsonParser jsonparser, DeserializationContext context) throws IOException { String date = jsonparser.getText(); try { return formatter.parse(date); } catch (ParseException e) { throw new RuntimeException(e); } } }
@JsonView
private static void annotationJsonView() throws JsonProcessingException { PeopleJsonView item = new PeopleJsonView(); item.id = 412; item.name = "rensanning 412 JsonView"; item.address = "china dalian"; ObjectMapper mapper = new ObjectMapper(); String result1 = mapper.writerWithView(Views.Public.class).writeValueAsString(item); System.out.println(result1); // {"id":412,"name":"rensanning 412 JsonView"} String result2 = mapper.writerWithView(Views.Internal.class).writeValueAsString(item); System.out.println(result2); // {"id":412,"name":"rensanning 412 JsonView","address":"china dalian"} }
static class Views { public static class Public { } public static class Internal extends Public { } } static class PeopleJsonView { @JsonView(Views.Public.class) public int id; @JsonView(Views.Public.class) public String name; @JsonView(Views.Internal.class) public String address; }
5.类信息
JsonTypeInfo.Id.CLASS
private static void jsonTypeInfoId() throws JsonProcessingException { PeopleInfoId p = new PeopleInfoId(); p.id = 501; p.name = "rensanning 501 JsonTypeInfoId"; ObjectMapper mapper = new ObjectMapper(); String json = mapper.writeValueAsString(p); System.out.println(json); // {"@class":"com.rensanning.jackson.Startup$PeopleInfoId","id":501,"name":"rensanning 501 JsonTypeInfoId"} }
@JsonTypeInfo(use=JsonTypeInfo.Id.CLASS) static class PeopleInfoId { public int id; public String name; @Override public String toString() { return "PeopleInfoId [id=" + id + ", name=" + name +"]"; } }
JsonTypeInfo.Id.CUSTOM
private static void jsonTypeInfoCustomId() throws JsonProcessingException { PeopleInfoCustomId p = new PeopleInfoCustomId(); p.id = 502; p.name = "rensanning 502 JsonTypeInfoCustomId"; ObjectMapper mapper = new ObjectMapper(); String json = mapper.writeValueAsString(p); System.out.println(json); // {"CustomIdKey":"Startup$PeopleInfoCustomId","id":502,"name":"rensanning 502 JsonTypeInfoCustomId"} }
@JsonTypeInfo(use = JsonTypeInfo.Id.CUSTOM, include = JsonTypeInfo.As.PROPERTY, property = "CustomIdKey") @JsonTypeIdResolver(PeopleInfoCustomIdResolver.class) static class PeopleInfoCustomId { public int id; public String name; @Override public String toString() { return "PeopleInfoCustomId [id=" + id + ", name=" + name +"]"; } } static class PeopleInfoCustomIdResolver implements TypeIdResolver { private static final String COMMAND_PACKAGE = "com.rensanning.jackson"; private JavaType mBaseType; @Override public void init(JavaType baseType) { mBaseType = baseType; } @Override public Id getMechanism() { return Id.CUSTOM; } @Override public String idFromValue(Object obj) { return idFromValueAndType(obj, obj.getClass()); } @Override public String idFromBaseType() { return idFromValueAndType(null, mBaseType.getRawClass()); } @Override public String idFromValueAndType(Object obj, Class<?> clazz) { String name = clazz.getName(); if (name.startsWith(COMMAND_PACKAGE)) { return name.substring(COMMAND_PACKAGE.length() + 1); } throw new IllegalStateException("class " + clazz + " is not in the package " + COMMAND_PACKAGE); } @Override public String getDescForKnownTypeIds() { return null; } @Override public JavaType typeFromId(DatabindContext arg0, String type) throws IOException { Class<?> clazz; String clazzName = COMMAND_PACKAGE + "." + type; try { clazz = ClassUtil.findClass(clazzName); } catch (ClassNotFoundException e) { throw new IllegalStateException("cannot find class '" + clazzName + "'"); } return TypeFactory.defaultInstance().constructSpecializedType(mBaseType, clazz); } }
JsonTypeInfo.As.WRAPPER_OBJECT
private static void jsonTypeInfoAs() throws JsonProcessingException { PeopleInfoAs p = new PeopleInfoAs(); p.id = 503; p.name = "rensanning 503 jsonTypeInfoAs"; ObjectMapper mapper = new ObjectMapper(); String json = mapper.writeValueAsString(p); System.out.println(json); // {"com.rensanning.jackson.Startup$PeopleInfoAs":{"id":503,"name":"rensanning 503 jsonTypeInfoAs"}} }
@JsonTypeInfo(use = JsonTypeInfo.Id.CLASS, include = JsonTypeInfo.As.WRAPPER_OBJECT) static class PeopleInfoAs { public int id; public String name; @Override public String toString() { return "PeopleInfoAs [id=" + id + ", name=" + name +"]"; } }
JsonTypeInfo.As.EXTERNAL_PROPERTY
private static void jsonTypeInfoAsExternal() throws JsonProcessingException { People p = new People(); p.id = 504; p.name = "rensanning 504 JsonTypeInfoAsExternal"; ExternalClass dto = new ExternalClass(); dto.people = p; ObjectMapper mapper = new ObjectMapper(); String json = mapper.writeValueAsString(dto); System.out.println(json); // {"people":{"id":504,"name":"rensanning 504 JsonTypeInfoAsExternal"},"@class":"com.rensanning.jackson.Startup$People"} }
static class ExternalClass { @JsonTypeInfo(use=JsonTypeInfo.Id.CLASS, include=JsonTypeInfo.As.EXTERNAL_PROPERTY) public People people; }
6.抽象类
@JsonTypeInfo(use=Id.CLASS)
private static void abstractClassID() throws IOException { P11 p11 = new P11(); p11.id = 601; p11.name = "rensanning 601"; P12 p12 = new P12(); p12.id = 602; p12.name = "rensanning 602"; Animal1 dto = new Animal1(); dto.list.add(p11); dto.list.add(p12); ObjectMapper mapper = new ObjectMapper(); String json = mapper.writeValueAsString(dto); System.out.println(json); // {"list":[{"@class":"com.rensanning.jackson.Startup$P11","id":601,"name":"rensanning 601"},{"@class":"com.rensanning.jackson.Startup$P12","id":602,"name":"rensanning 602"}]} dto = (Animal1) mapper.readValue(json, Animal1.class); System.out.println(dto); }
@JsonTypeInfo(use=Id.CLASS) static abstract class Base1 { public int id; public String name; } static class P11 extends Base1 { @Override public String toString() { return "P11 [id=" + id + ", name=" + name + "]"; } } static class P12 extends Base1 { @Override public String toString() { return "P12 [id=" + id + ", name=" + name + "]"; } } static class Animal1 { public List<Base1> list = new ArrayList<Base1>(); }
mapper.enableDefaultTyping();
private static void abstractClassType() throws IOException { P21 p21 = new P21(); p21.id = 603; p21.name = "rensanning 603"; P22 p22 = new P22(); p22.id = 604; p22.name = "rensanning 604"; Animal2 dto = new Animal2(); dto.list.add(p21); dto.list.add(p22); ObjectMapper mapper = new ObjectMapper(); mapper.enableDefaultTyping(); String json = mapper.writeValueAsString(dto); System.out.println(json); // {"list":["java.util.ArrayList",[["com.rensanning.jackson.Startup$P21",{"id":603,"name":"rensanning 603"}],["com.rensanning.jackson.Startup$P22",{"id":604,"name":"rensanning 604"}]]]} dto = (Animal2) mapper.readValue(json, Animal2.class); System.out.println(dto); }
static abstract class Base2 { public int id; public String name; } static class P21 extends Base2 { @Override public String toString() { return "P21 [id=" + id + ", name=" + name + "]"; } } static class P22 extends Base2 { @Override public String toString() { return "P22 [id=" + id + ", name=" + name + "]"; } } static class Animal2 { public List<Base2> list = new ArrayList<Base2>(); }
@JsonSubTypes
private static void abstractClassSubType() throws IOException { P31 p31 = new P31(); p31.id = 605; p31.name = "rensanning 605"; P32 p32 = new P32(); p32.id = 606; p32.name = "rensanning 606"; Animal3 dto = new Animal3(); dto.list.add(p31); dto.list.add(p32); ObjectMapper mapper = new ObjectMapper(); String json = mapper.writeValueAsString(dto); System.out.println(json); // {"list":[{"type":"P31","id":605,"name":"rensanning 605"},{"type":"P32","id":606,"name":"rensanning 606"}]} dto = (Animal3) mapper.readValue(json, Animal3.class); System.out.println(dto); }
@JsonTypeInfo( use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "type") @JsonSubTypes({ @Type(value = P31.class, name = "P31"), @Type(value = P32.class, name = "P32") }) static abstract class Base3 { public int id; public String name; } static class P31 extends Base3 { @Override public String toString() { return "P31 [id=" + id + ", name=" + name + "]"; } } static class P32 extends Base3 { @Override public String toString() { return "P32 [id=" + id + ", name=" + name + "]"; } } static class Animal3 { public List<Base3> list = new ArrayList<Base3>(); }
参考:
http://qiita.com/opengl-8080/items/b613b9b3bc5d796c840c
http://www.baeldung.com/jackson
- JacksonSample.zip (1.4 MB)
- 下载次数: 0
发表评论
-
Web API分页
2018-11-13 13:38 1503(一)分页类型 逻辑分页(客户端分页):从数据库将所有记录查询 ... -
JAXB实例入门
2017-06-09 10:17 1703JAXB(Java Architecture for XML ... -
Java Web项目中的Event
2017-06-05 09:42 1612(1)Servlet的事件和监听器 *** Servle ... -
关于Java SPI
2017-05-04 12:07 1985SPI:Service Provider Interface ... -
为什么https被redirect成了http?
2016-11-14 09:35 7638全站HTTPS并不是配置证书CA,改改路径URL那么简单! ... -
简化Java代码
2016-10-09 11:25 1246样板代码Boilerplate Code的 ... -
Java Web Project based on Spring
2016-09-28 11:21 985基于Spring开发Web项目的标配Library。 工具 ... -
Eclipse Scrapbook快速测试Java代码
2016-09-09 15:12 1276Scrapbook是Eclipse提供的特 ... -
Java爬取 百度图片&Google图片&Bing图片
2016-08-04 09:54 7455先看看抓取的结果。 抓关键字“美女”的百度图片: 抓关键字 ... -
学习Java容易混淆的一概念
2016-05-13 11:01 1607基础篇 (1)== vs equals() ... -
20年Java发展历程(1995-2015)
2015-03-25 21:58 2275Java语言作为现在最流行的编程语言之一,它已经经历了整整20 ... -
Java命令行选项解析之Commons-CLI & Args4J & JCommander
2014-11-27 12:09 22379熟悉Linux命令的都知道几乎所有程序都会提供一些命令行选项。 ... -
Java调用Native API之JNA
2014-11-10 12:09 7711Java调用C/C++的Native API一般采用JNI(J ... -
Java执行SSH/SCP之JSch
2014-08-27 17:17 11422JSch (Java Secure Channel)是纯Jav ... -
GC日志分析
2014-07-18 08:54 2821GC:Garbage Collection 垃圾回收 (1) ... -
Java元组类型之javatuples
2014-05-20 10:58 26915关于方法的返回值,经常需要返回2个值或多个值的一个序列,比如数 ... -
AngularJS实例入门
2014-05-16 14:35 2590AngularJS :Google的前端JS框架。 版本:v ... -
Java 8 之 反编译Lambda表达式(CFR)
2014-04-14 09:34 6471CFR(Class File Reader) - anoth ... -
Java 8 之 Optional类
2014-04-08 14:38 2930在Java中,null代表一个不存在的对象,如果对它进行操作就 ... -
Java 8 之 Lambda表达式
2014-04-01 09:14 16123Java 8历时2年8个月,这次升级是继Java 5之后对Ja ...
相关推荐
Java波浪文字,一个利用Java处理字符的实例,可以设置运动方向参数,显示文本的字符数组,高速文本颜色,显示字体的 FontMetrics对象,得到Graphics实例,得到Image实例,填充颜色数组数据,初始化颜色数组。...
Java波浪文字,一个利用Java处理字符的实例,可以设置运动方向参数,显示文本的字符数组,高速文本颜色,显示字体的 FontMetrics对象,得到Graphics实例,得到Image实例,填充颜色数组数据,初始化颜色数组。...
Jackson 94 John Doe 80 Adam Johnson 67 在线实例 这个例子演示如何在 HTML 文档中创建表格。 (可以在本页底端找到更多实例。) HTML 表格 表格由 标签来定义。每个表格均有若干行(由标签定义),每行被...
开发它是用于在UTF-8 Oracle实例中使用ASCII编码的Oracle 数据库中来正确的传输非ASCII字符。 Java模板语言 Beetl Beetl,是Bee Template Language的缩写,它绝不是简单的另外一种模板引擎,而是新一代的模板引擎,...
开发它是用于在UTF-8 Oracle实例中使用ASCII编码的Oracle 数据库中来正确的传输非ASCII字符。 Java模板语言 Beetl Beetl,是Bee Template Language的缩写,它绝不是简单的另外一种模板引擎,而是新一代的模板引擎,...
开发它是用于在UTF-8 Oracle实例中使用ASCII编码的Oracle 数据库中来正确的传输非ASCII字符。 Java模板语言 Beetl Beetl,是Bee Template Language的缩写,它绝不是简单的另外一种模板引擎,而是新一代的模板引擎,...
开发它是用于在UTF-8 Oracle实例中使用ASCII编码的Oracle 数据库中来正确的传输非ASCII字符。 Java模板语言 Beetl Beetl,是Bee Template Language的缩写,它绝不是简单的另外一种模板引擎,而是新一代的模板引擎,...
开发它是用于在UTF-8 Oracle实例中使用ASCII编码的Oracle 数据库中来正确的传输非ASCII字符。 Java模板语言 Beetl Beetl,是Bee Template Language的缩写,它绝不是简单的另外一种模板引擎,而是新一代的模板引擎,...
开发它是用于在UTF-8 Oracle实例中使用ASCII编码的Oracle 数据库中来正确的传输非ASCII字符。 Java模板语言 Beetl Beetl,是Bee Template Language的缩写,它绝不是简单的另外一种模板引擎,而是新一代的模板引擎,...
开发它是用于在UTF-8 Oracle实例中使用ASCII编码的Oracle 数据库中来正确的传输非ASCII字符。 Java模板语言 Beetl Beetl,是Bee Template Language的缩写,它绝不是简单的另外一种模板引擎,而是新一代的模板引擎,...
开发它是用于在UTF-8 Oracle实例中使用ASCII编码的Oracle 数据库中来正确的传输非ASCII字符。 Java模板语言 Beetl Beetl,是Bee Template Language的缩写,它绝不是简单的另外一种模板引擎,而是新一代的模板引擎,...
开发它是用于在UTF-8 Oracle实例中使用ASCII编码的Oracle 数据库中来正确的传输非ASCII字符。 Java模板语言 Beetl Beetl,是Bee Template Language的缩写,它绝不是简单的另外一种模板引擎,而是新一代的模板引擎,...
开发它是用于在UTF-8 Oracle实例中使用ASCII编码的Oracle 数据库中来正确的传输非ASCII字符。 Java模板语言 Beetl Beetl,是Bee Template Language的缩写,它绝不是简单的另外一种模板引擎,而是新一代的模板引擎,...
开发它是用于在UTF-8 Oracle实例中使用ASCII编码的Oracle 数据库中来正确的传输非ASCII字符。 Java模板语言 Beetl Beetl,是Bee Template Language的缩写,它绝不是简单的另外一种模板引擎,而是新一代的模板引擎,...
开发它是用于在UTF-8 Oracle实例中使用ASCII编码的Oracle 数据库中来正确的传输非ASCII字符。 Java模板语言 Beetl Beetl,是Bee Template Language的缩写,它绝不是简单的另外一种模板引擎,而是新一代的模板引擎,...
开发它是用于在UTF-8 Oracle实例中使用ASCII编码的Oracle 数据库中来正确的传输非ASCII字符。 Java模板语言 Beetl Beetl,是Bee Template Language的缩写,它绝不是简单的另外一种模板引擎,而是新一代的模板引擎,...