jackson用于java对象到json的序列化与反序列化。还支持xml格式。
jackson用于实现json与java对象的序列与反序列化。web service要实现跨机器传送对象那么就需要有一种技术能把对象转换为特定格式的信息。为了实现跨平台(比如把java对象转化为c#或c++对象),又考虑到方便人们阅读,所以基于字符串规则的转换是最理想的。json就是这样一个轻量级的数据交换格式,而jackson是一个实现该功能的很好用的框架。
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId> jackson-databind</artifactId>
<version>2.6.4</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-annotations</artifactId>
<version>2.6.4</version>
</dependency>
2.常用注解
@com.fasterxml.jackson.annotation.
JsonPropertyOrder
指定序列化为json串时的各字段顺序
@com.fasterxml.jackson.annotation.
JsonIgnoreProperties
指定序列化为json串时排除的一些字段
@JsonAutoDetect
@JsonPropertyOrder(value = {"price", "name"})
@JsonIgnoreProperties(value = {"year"})
public class Book {
public String name = "Physics";
public String price = "123";
public String year = "2015";
@Produces(MediaType.APPLICATION_JSON)
public Book wsBook(){
return new Book();
@com.fasterxml.jackson.annotation.JsonProperty
字段在序列化时只用指定的别名
3. 常用函数
com.fasterxml.jackson.databind.
ObjectMapper
com.fasterxml.jackson.databind.ObjectMapper.
ObjectMapper()
ObjectMapper的构造函数,得到的对象是线程安全的,建议在程序中作为静态成员直接用。
3.1 对象与json
<T> T com.fasterxml.jackson.databind.ObjectMapper.
readValue(File src, Class<T> valueType)
从文件中直接反序列化,当然,文件中是json格式的字符串。
<T> T com.fasterxml.jackson.databind.ObjectMapper.
readValue(String content,
Class<T> valueType)
从字符串中反序列化。
public void
writeValue(File resultFile, Object value)
将对象序列化到文件中去。文件是json格式的文本文件。
String com.fasterxml.jackson.databind.ObjectMapper.
writeValueAsString(Object value)
将对象序列化成json格式的string。
3.2 泛型
<T> T com.fasterxml.jackson.databind.ObjectMapper.
readValue(URL src,
TypeReference valueTypeRef)
反序列化时指定泛型参数。这个函数很有用,如:
public static ConcurrentHashMap<String,Integer> readMapFromFile(File file) throws JsonParseException, JsonMappingException, IOException{
//new an anonymous class
return objectMapper.readValue(file, new TypeReference<ConcurrentHashMap<String,Integer>>() {});
3.3 缩进
ObjectMapper objectMapper=new ObjectMapper().enable(SerializationFeature.INDENT_OUTPUT);
此时序列化后的json带缩进,方便肉眼看。
3.4 jsonNode
com.fasterxml.jackson.databind.
JsonNode
json同xml类似,背后的数据结构都是树。当我们不需要反序列化,直接遍历某些节点时,就可以用JsonNode。
JsonNode com.fasterxml.jackson.databind.ObjectMapper.readTree(String content)
读取json,得到root节点。
JsonNode com.fasterxml.jackson.databind.JsonNode.
get(String fieldName)
获取指定的孩子node。若不存在返回null。
String com.fasterxml.jackson.databind.JsonNode.
asText()
将当前节点的内容以string格式输出。
String com.fasterxml.jackson.databind.JsonNode.
asText(String defaultValue)
当指定的节点不存在时返回形参中的默认值。
5.xml
在以上依赖的基础上添加:
<dependency>
<groupId>com.fasterxml.jackson.dataformat</groupId>
<artifactId>jackson-dataformat-xml</artifactId>
<version>2.6.4</version>
</dependency>
5.1 常用类与函数
com.fasterxml.jackson.dataformat.xml.XmlMapper
它是ObjectMapper类的子类,用于处理xml。
注意mapper.enable(SerializationFeature.INDENT_OUTPUT);是不支持的。
6.指定反序列化时的实现类
如果是List接口,默认实现类是ArrayList。如果写明了LinkedList等,那么反序列化后就是LinkedList。
.NET中XML序列化和反序列化常用类和用来控制XML序列化的属性总结(XmlSerializer,XmlTypeAttribute,XmlElementAttribute,XmlAttributeAttribute,XmlArrayAttribute...)
.NET中XML序列化和反序列化常用类和用来控制XML序列化的属性总结(XmlSerializer,XmlTypeAttribute,XmlElementAttribute,XmlAttributeAttribute,XmlArrayAttribute...)
二进制序列化器、XML序列化器、Json序列化器
序列化是将对象的状态信息转换未可以存储或传输的形式的过程。在序列化期间,对象将其当前状态写入到临时或持久性存储区。以后,可以通过从存储区读取或反序列化对象的状态,重新创建对象。
【Groovy】xml 序列化 ( 使用 StreamingMarkupBuilder 生成 xml 数据 | mkp.xmlDeclaration() 生成 xml 版本数据 )
【Groovy】xml 序列化 ( 使用 StreamingMarkupBuilder 生成 xml 数据 | mkp.xmlDeclaration() 生成 xml 版本数据 )
【Groovy】xml 序列化 ( 使用 MarkupBuilder 生成 xml 数据 | 标签闭包下创建子标签 | 使用 MarkupBuilderHelper 添加 xml 注释 )
【Groovy】xml 序列化 ( 使用 MarkupBuilder 生成 xml 数据 | 标签闭包下创建子标签 | 使用 MarkupBuilderHelper 添加 xml 注释 )
【Groovy】xml 序列化 ( 使用 MarkupBuilder 生成 xml 数据 | 设置 xml 标签内容 | 设置 xml 标签属性 )
【Groovy】xml 序列化 ( 使用 MarkupBuilder 生成 xml 数据 | 设置 xml 标签内容 | 设置 xml 标签属性 )
首先,在.net平台不论要接收什么,肯定是从Request里获取。
大家肯定对普通的参数获取非常熟悉了,下面就介绍一下如何从Request获取文件流.
System.IO.Stream sm =Request.Content.ReadAsStreamAsync().Result
这个方法返回的是一个System.IO.Stream类型,如果是单纯想获得文件,到这一步你就可以把它保存到本地了。
原文:C#里XML(JSON)序列化时,自动隐藏值为Null的成员的输出
从StackOverflow里找到的答案。发现对最新的Newtownsoft的JSON序列化也同样适用。
https://stackoverflow.
使用XML序列化实现系统配置 - 开源研究系列文章
在实际的C#软件系统开发过程中,会遇到系统配置的保存问题,以及系统存储问题。在以前的系统开发过程中,笔者使用的是INI文件配置管理的方式。到了现在,INI文件配置保存仍然是一个平常使用的方式。在博客园里,笔者看到过有些朋友使用JSON文件的保存配置管理方式。