FastXML Jackson / JSON 学习记录

资源

Jackson Project Home @github
jackson-core @github
jackson-annotations@github | 各种annotations介绍@github
jackson-databind@github
FasterXML/jackson-docs@github
Java JSON Tutorial 很详细的教程
Eugen Paraschiv JSON Blog教程,对各种特性都有介绍且有简单例子

FastXML Jackon最佳实践

原文Jackson Best Practices: Performance
简单总结
-尽可能重用ObjectMapperJsonFactory
使用后清理
作为惯例,对象使用后要清理,关闭。如JsonParserJsonGenerator
清理工作能释放及重用一些内部资源。对一些短小的JSON Document特别有用。
使用最原始的输入源
Jackson已经对各种输入源的格式做了优化,能有效且正确地转换、解码。
假如使用者有InputStream,不需转为InputStreamReader。
如果使用者有File或URL,只要直接交给Jackon就行了。
不要缓存输入源。
无需预先处理数据,Jackson干得比你高效,人家是专家。
必要时才修改默认设置
默认设置已经是先优性能。启用一些特性会带来性能影响,所以不是特别需要就不要修改。
可再处理、回放,但不要多次解释

If you need to re-process, replay, don’t re-parse

假如不能一下子全部处理完JSON的内容,不应该也不能把中间产物还原JSON文本,即使Jackson足够快,但这些操作的消耗比较大的。
-如果你需要JSON Tree做一些事情,可以通过调用 JsonParser jp = treeRoot.traverse()来构建JsonParser
-如果需要多次读取同一个流的内容,可能使用org.codehaus.jackson.util.TokenBuffer,反复读取它的消耗都比较小。
此外,TokenBuffer实现了JsonGenerator接口, 可以用TokenBuffer串行化POJOs:objectMapper.writeValue(tokenBuffer, bean)
当内容需要递增地处理时,使用JsonNode或TokenBuffer能很好地提高性能。
此外,因为有大量各种的转换器,写出的代码将会是简单和易懂的。
静态类型
静态类型能轻微提高性能。
优先ObjectReader/ObjectWriter而非ObjectMapper
主要是为了线程安全,但对性能也有帮助。
使用ObjectReader.readValues生成字符串
在读取顶层POJO时,ObjectReader的readValues()的方法比使用ObjectMapper.readValue()更有效.

NoClassDefFoundError是一种运行时异常,通常发生在Java应用程序试图加载不存在的类时。在这个特定的例子中,错误提示`com.fasterxml.jackson.annotation.JsonKey`找不到,这意味着你在程序中引用了一个名为`JsonKey`的Jackson注解,而这个注解所在的类`com.fasterxml.jackson.annotation.JsonKey`并未正确地包含在项目的类路径(classpath)中。 Jackson是一个流行的JSON库,在处理JSON数据时经常被使用,`JsonKey`可能是Jackson库的一部分,用于标注JSON属性的键。为了修复这个问题,你需要确保已经添加了Jackson的依赖,并将其正确地配置到项目中。以下是可能的解决方案步骤: 1. **检查Maven或Gradle配置**:如果你使用的是Maven,确认pom.xml文件中有Jackson的dependency声明;如果是Gradle,确认build.gradle文件中有相应的库依赖项。 ```xml <!-- Maven --> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>版本号</version> </dependency> // Gradle (如果未指定版本,则默认) implementation 'com.fasterxml.jackson.core:jackson-databind' ``` 2. **刷新构建工具缓存**:如果你使用IDEA等集成开发环境,尝试清理并重建项目。 3. **添加缺失模块**:如果你使用的是jar包而不是Maven仓库,确保包含了包含`JsonKey`的完整jackson包。 4. **检查路径冲突**:确保没有其他库或插件覆盖了Jackson,这可能导致包冲突。 如果以上都排查过还是出现问题,可能需要查看具体的错误堆栈信息,以便更准确地定位问题所在。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值