JSONCoder 是一个轻量级的通用的 Java 对象序列化和反序列化到 JSON 格式的工具包,类似 Jackson 或者 FastJson。这个库在 eBay 内部广泛使用多年。这并非是要替代其他常用库,主要是解决了一些其他库中不被支持的特别问题。
一般的 JSON 库都有大量的参数,eBay 单独再开发一个 JSONCoder 的原因是,如果我们用 JSON 来做配置文件的时候经常会受限于 JSON 标准的一些约束,但又不想使用放弃 JSON 改用 YAML 或者其他格式,那么你可以试试这个 JSONCoder,该项目主要聚焦于解决如下问题:
更多关于 JSONCoder 的配置项请看 JSONCoderOption
测试示例请看 JSONCoderTest
<dependency> <groupId>com.ebay.jsoncoder</groupId> <artifactId>JSONCoder</artifactId> <version>${jsonCoderVersion}</version> </dependency>You can get current version by searching maven central
// serialization JSONCoder.global.encode(o) // de-serialization SomeClass obj = JSONCoder.global.decode(str, SomeClass.class);
JSONCoderOption opt = new JSONCoderOption(); // For SomeClass1 and it's sub-classes, only include field: "field1ForClass1", "field2ForClass1" opt.getSimpleFilterFor(SomeClass1.class).setInclude(true).addProperties("field1ForClass1", "field2ForClass1"); // For SomeClass2, exclude field: "fieldForClass2" opt.getSimpleFilterFor(SomeClass2.class).addProperties("fieldForClass2"); // For any class, exclude field: "fieldInAnyClass" opt.getDefaultFilter().addProperties("fieldInAnyClass"); // Exclude certain classes opt.addSkippedClasses(SomeExcludedClass.class); String result = JSONCoder.encode(bean, opt);
String str = "['str1', 'str2', 'str3']"; List<String> result = JSONCoder.global.decode(new DecodeReq<List<String>>(){}.setSource(str));
TestBean bean = JSONCoder.global.decodeTo(jsonStr, bean);
JSONCoderOption opt = new JSONCoderOption(); opt.getJsonOption().setQuoteChar('`'); opt.getJsonOption().setIndentFactor(2); String jsonStr = JSONCoder.global.encode(someObj, opt);
public class CoderBigInteger implements ICoder<BigInteger>{ public Class<BigInteger> getType() {return BigInteger.class;} @Override public TDNode encode(BigInteger o, BeanCoderContext context, TDNode target) { return target.setValue(o.toString()); } @Override public BigInteger decode(TDNode jsonNode, Type type, BeanCoderContext context) { return new BigInteger((String)jsonNode.getValue()); } } JSONCoderOption opt = new JSONCoderOption() .addCoder(new CoderBigInteger()); String jsonStr = JSONCoder.global.encode(new BigInteger("1234"), opt);
在上一章,已经讲过在 codec 中使用 JSON 编码。但是,有些日志可能是一种复合的数据结构,其中只是一部分记录是 JSON 格式的。这时候,我们依然需要在 filter 阶段,单独启用 JSON 解码插件。 配置示例 filter { json { source => "message" target => "jsoncontent" } }
问题内容: 有谁知道一个可以轻松地将Java Maps编码为JSON对象的Java库? 更新 由于无法解释的原因(有时我讨厌),我无法在环境中使用泛型。 我正在尝试做的事情是这样的: 并能够再次将其作为地图列表 问题答案: JSON-Simple看起来相对易于使用(下面的示例)。 映射到JSON: JSON到列表/地图:
这可能很容易,但我真的可以在这里使用Ajax和JSON方面更聪明的人来帮助我。我有一个Javascript函数将Ajax请求传递给PHP后端。我将传递一个javascript对象作为“request\u parameters”post变量。当它出现在PHP上时,我可以导航它,但是对象结构已经被数组所取代。相反,我希望对象结构保持完整,因此作为足够聪明的危险类型,我决定对对象进行JSON编码: 相对
问题内容: 我有一个用于ERP系统的快速开发工具,该工具仅允许使用vbscript。我正在尝试使用VBS创建一个简单的AJAX请求。可以使用“ Microsoft.XMLHTTP”对象。 下一步是使用json从网络服务器接收数据。但是在VBS中似乎没有像“ json_decode”或其他功能。 有人知道解决方案吗?还是开发自己的json函数的唯一选择? 问题答案: 由于JSON是一种分层数据格式,
问题内容: 大家好,我是从外部Api获取websocket信息的,它以这种方式给了我json响应: 我把它放在这个结构中 并用代码解码 我遇到错误 我知道该错误是文本字段值的结果。有什么好的方法可以清理它或告诉解码器忽略文本字段的内容吗? 问题答案: 该应用程序正在解析包含substring的数据。这是无效的JSON。错误消息抱怨in 。 由于JSON值包含编码的JSON值,因此应用程序必须分两个
本文向大家介绍Go JSON编码与解码的实现,包括了Go JSON编码与解码的实现的使用技巧和注意事项,需要的朋友参考一下 在开发应用程序时,客户端(前端页面或APP)与服务端交互是在所难免的,在交互过程传递数据时,最通用和流行格式便是JSON,Go语言提供了encoding/json包,用于处理JSON数据的编码与解码。 除了JSON,XML也常用于前后端的数据交互,不过由于简洁性、可读性和流行
我已经下载了json和我的对话档案。我坚持使用奇怪的编码。 json的例子: 应该是这样的: 我正试图这样反序列化它: 不幸的是,输出如下: 有人知道Facebook如何编码json吗?我尝试了几种方法,但没有结果。 谢谢你的帮助。
问题内容: 我有一些json,我需要解码,更改然后编码,而不会弄乱任何字符。 如果我在json字符串中包含unicode字符,它将无法解码。我不知道为什么,因为json.org说一个字符串可以包含:。但这在python中也不起作用。 我可以使用utf8_encode,该字符串将允许使用json_decode对字符串进行解码,但是字符会被压缩成其他形式。这是来自结果数组的print_r的结果。两个字