父类
package inheritance.test2; import java.util.Map; public class Model { private String field1; private String field2; private Map<String, String> infoMap; public String getField2() { return field2; } public void setField2(String field2) { this.field2 = field2; } public String getField1() { return field1; } public void setField1(String field1) { this.field1 = field1; } public Map<String, String> getInfoMap() { return infoMap; } public void setInfoMap(Map<String, String> infoMap) { this.infoMap = infoMap; } }
子类
package inheritance.test2; public class DetailModel extends Model { private String field3; private String field4; public String getField3() { return field3; } public void setField3(String field3) { this.field3 = field3; } public String getField4() { return field4; } public void setField4(String field4) { this.field4 = field4; } }
测试类:
package inheritance.test2; import com.google.gson.Gson; import org.junit.Assert; import java.util.HashMap; import java.util.Map; public class Test { @org.junit.Test public void testGsonInheritance() { DetailModel dm = new DetailModel(); dm.setField1("field1"); dm.setField2("field2"); dm.setField3("field3"); dm.setField4("field4"); Map<String, String> im = new HashMap<String, String>(); im.put("key1","value1"); im.put("key2","value2"); im.put("key3","value3"); dm.setInfoMap(im); String str = new Gson().toJson(dm); System.out.println(str); Model model = new Gson().fromJson(str, Model.class); Assert.assertTrue(model.getField1().equals(dm.getField1())); Assert.assertTrue(model.getField2().equals(dm.getField2())); Map<String, String> map = model.getInfoMap(); Assert.assertEquals(map.size(), 3); Assert.assertNotNull(map.get("key1")); Assert.assertNotNull(map.get("key2")); dm.setInfoMap(null); str = new Gson().toJson(dm); model = new Gson().fromJson(str, Model.class); map = model.getInfoMap(); Assert.assertNull(map); } }
总结
1. 子类序列化为JSON串,JSON串反序列化为父类,相应的字段可以完成反序列化,其它字段自动抛弃,这符合面向对象的特性,子类造型为父类,通过父类可以访问父类提供的数据访问方法,子类自己的数据不能访问
2. 反序列化时,如果POJO的字段在JSON串中不存在,那么POJO的这个字段为null
3. 这个例子具有一般性,更常见的场景,从别的系统获取JSON数据串,但是JSON串内容很丰富,有些字段不是自身的系统所需要的,可以定义一个简单的POJO,在反序列化时,将感兴趣的字段和数据反序列化到POJO中,POJO只包含自己感兴趣的内容
相关推荐
1. JSON到Java对象的反序列化:Gson能够将JSON字符串解析成相应的Java对象,如POJO(Plain Old Java Object)或者基本数据类型。例如,一个JSON字符串`{"name":"John", "age":30}`可以被解析成一个包含姓名和年龄...
FX Gson只需删除属性“包装”,然后将值的序列化委托给Gson。 这意味着在序列化该类型的属性时,将考虑您添加到Gson的有关该类型的任何配置。 对于对象和基元来说确实如此。 为什么使用FX Gson? 在JavaFX中,POJO...
- **Jackson**:它是一个快速、功能丰富的JSON库,提供了多种方式(如JsonNode、POJO、流API等)处理JSON数据,同时支持JSON序列化和反序列化。 - **Gson**:Google开发的库,能够直接将Java对象转换为JSON字符串...
4. **序列化和反序列化的自定义**:对于需要特殊处理的字段,Gson允许你使用注解来控制序列化和反序列化的行为。比如,`@Expose`注解可以标记需要被转换的字段,`@SerializedName`可以重命名JSON键。 5. **日期时间...
Gson是Google提供的一个用于将Java对象序列化和反序列化为JSON的库。它提供了fromJson()和toJson()两个方法,用于实现反序列化和序列化。下面将对Gson的基本用法和属性重命名进行详细介绍。 一、Gson的基本用法 ...
格森·菲尔FHIR的Gson序列化类概述该库包含所有491个FHIR资源和STU3定义的引用类型,并建模为带有适当Gson序列化注释的旧Java类(POJO)。 这是使用基于JSON的FHIR事务序列化的Java应用程序的便捷库。伪像Maven:...
在Java开发中,JDK是Java Development Kit的缩写,它是Oracle公司提供的用于开发和运行Java应用程序的工具...通过学习和实践这些知识,你可以更好地处理Java中的数据序列化和反序列化,以及在运行时动态操作类和对象。
- 在序列化和反序列化时,可以结合Parcelable和Gson,但需要注意序列化和反序列化过程中的类型转换问题。 10. **Equality and Hashing**: - 为确保正确比较,重写equals()和hashCode()方法。对于基于属性的比较...
3. XStream:XStream是一个用于在Java对象和XML之间进行映射的库,它提供了一种简单的方式来序列化和反序列化Java对象。XStream的强大之处在于其直观的API,开发者可以直接使用Java对象,而无需编写大量的XML绑定...
Json2Pojo IntelliJ插件,可以使用GSON批注和访问器从JSON轻松创建Java POJO。 用法 通过打开首选项->插件->搜索“ Json2Pojo”,将插件安装在... 该插件将在目标目录中生成您的新类,以便通过GSON轻松反序列化。
总结来说,"json式用法"主要涉及JSON的使用,特别是使用Gson库在Java中进行JSON操作,包括序列化、反序列化、处理复杂数据类型等。提供的jar包、示例代码和方法封装笔记都是为了帮助理解并有效地实践这些概念。在...
它提供了高效、灵活的JSON序列化和反序列化功能,使得Java对象能够轻松地转换为JSON格式,反之亦然。Jackson 2.2.1是该库的一个版本,包含了核心组件和多个模块,以支持不同场景下的JSON操作。 1. **序列化与反序列...
Jackson还支持许多高级特性,如类型安全的POJO(Plain Old Java Object)反序列化、支持泛型、处理复杂JSON结构(如嵌套对象和数组)、数据绑定到非JavaBean对象、以及高效的树模型(JsonNode)等。此外,它也兼容...
1. Jackson:一个高性能的JSON处理器,提供了丰富的API,支持JSON的序列化和反序列化,以及JSON到POJO的映射。 2. Gson:Google提供的一个库,能够将Java对象转换为JSON格式的字符串,反之亦然。 3. JSON-P:Java...
首先,定义对应的POJO类,然后使用`SimpleXMLSerializer`进行反序列化: ```java @Root(name = "root") public class MyPojo { @Element private String someField; // ...其他字段 } Serializer ...
3. **扩展功能**:可能提供了额外的注解支持,使生成的Java类具有更丰富的元信息,如Jackson或Gson的注解,以控制序列化和反序列化的行为。 4. **错误处理和日志**:可能包含了更好的错误处理机制和详细的日志输出...
这两个库都提供了简单易用的API来序列化和反序列化JSON对象。 1. Jackson库: Jackson是Java中最流行的JSON处理库之一,它由 FasterXML 组织维护。使用Jackson,我们可以将JSON字符串转换为Java对象,反之亦然。...
在Java开发中,Fastjson是阿里巴巴提供的一款高效、强大的JSON库,它具有极快的性能,广泛的功能以及友好的API,使得JSON序列化和反序列化变得简单。 Fastjson 1.7.2 版本是该库的一个稳定版本,提供了多种操作JSON...
- `CycleDetectionStrategy`是`JsonConfig`的一个属性,用于防止在序列化和反序列化过程中出现无限循环引用的问题。例如,如果一个对象引用了自身或形成了一个循环引用链,不开启循环检测可能会导致程序崩溃。 5. ...
在Java编程中,经常需要处理数据的序列化和反序列化,其中ArrayList<Map<Object>>与JSON之间的转换是一个常见的需求。JSON是一种轻量级的数据交换格式,广泛用于互联网应用中的数据传输,因为它易于阅读和编写,同时...