Json基础教程
Jackson教程
- Jackson介绍
- Jackson入门程序
- Jackson ObjectMapper实现JSON实际的读/写
- Jackson对象序列化/反系列化
- Jackson数据绑定
- Jackson JSON映射到任何Java对象
- Jackson使用具体的Java对象和类型强制转换到JSON使用
- Jackson树模型JsonNode
- Jackson流式API JsonGenerator、JsonParser
Gson教程
开源项目
知识点
相关文章
更多最近更新
更多Jackson对象序列化/反系列化
2019-05-09 23:25|来源: 网路
这里将介绍将Java对象序列化到一个JSON文件,然后再读取JSON文件获取转换为对象。在这个例子中,创建了Student类。创建将有学生对象以JSON表示在一个student.json文件。
创建一个名为JacksonTester在Java类文件在 C:\>Jackson_WORKSPACE.
文件: JacksonTester.java
import java.io.File; import java.io.IOException; import org.codehaus.jackson.JsonGenerationException; import org.codehaus.jackson.JsonParseException; import org.codehaus.jackson.map.JsonMappingException; import org.codehaus.jackson.map.ObjectMapper; public class JacksonTester { public static void main(String args[]){ JacksonTester tester = new JacksonTester(); try { Student student = new Student(); student.setAge(10); student.setName("Mahesh"); tester.writeJSON(student); Student student1 = tester.readJSON(); System.out.println(student1); } catch (JsonParseException e) { e.printStackTrace(); } catch (JsonMappingException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } private void writeJSON(Student student) throws JsonGenerationException, JsonMappingException, IOException{ ObjectMapper mapper = new ObjectMapper(); mapper.writeValue(new File("student.json"), student); } private Student readJSON() throws JsonParseException, JsonMappingException, IOException{ ObjectMapper mapper = new ObjectMapper(); Student student = mapper.readValue(new File("student.json"), Student.class); return student; } } class Student { private String name; private int age; public Student(){} public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public String toString(){ return "Student [ name: "+name+", age: "+ age+ " ]"; } }
验证结果
使用 javac 编译如下类:
C:\Jackson_WORKSPACE>javac JacksonTester.java
现在运行jacksonTester看到的结果:
C:\Jackson_WORKSPACE>java JacksonTester
验证输出结果
Student [ name: Mahesh, age: 10 ]
相关问答
更多-
你必须配置你的对象映射器来支持这种情况。 ObjectMapper objectMapper = ... objectMapper.configure(SerializationFeature.FAIL_ON_EMPTY_BEANS, false); 这个功能的文档可以在这里找到: 空梁上失败 确定在找到某个类型没有访问者时会发生什么的功能(并且没有注释表明它将被序列化)。 如果启用(默认),则抛出异常以将它们指示为不可序列化的类型; 如果禁用,它们将被序列化为空对象,即没有任何属性。 The ans ...
-
首先创建一个映射器: import com.fasterxml.jackson.databind.ObjectMapper;// in play 2.3 ObjectMapper mapper = new ObjectMapper(); 作为数组: MyClass[] myObjects = mapper.readValue(json, MyClass[].class); 作为列表: List
myObjects = mapper.readValue(jsonInput, new Ty ... -
JSON最好通过将其写为字节来序列化。 在Jackson中,它是使用ObjectMapper完成的,例如: byte[] raw = objectMapper.writeValueAsBytes(root); MemCache并不真正需要Serializable,因为它是所有原始字节; 虽然Java客户端可能会尝试提供帮助并处理序列化。 JSON is best serialized by writing it out as bytes. In Jackson, it is done using Obje ...
-
非系列化没有工作(NonSerialized dind't work)[2022-09-18]
对于你想要的XmlSerializer [XmlIgnore] 另外请注意,在这种情况下[Serializable]是不必要的。 最后说明:不鼓励公共领域; 属性始终是首选。 {get;set;}会有很长的路要走...... For XmlSerializer you want [XmlIgnore] Also, note that the [Serializable] is unnecessary in this case. As a final note: public fields are not ... -
如何使用Jackson序列化/反序列化第三方Java对象(How to serialize/deserialize third party Java objects with Jackson)[2023-09-16]
如果要控制第三方类上生成的json,可以注释混合接口。 在这里阅读更多内容: http : //wiki.fasterxml.com/JacksonMixInAnnotations You can annotate a mix-in interface if you want to control the generated json on third party classes. read more here: http://wiki.fasterxml.com/JacksonMixInAnnotatio ... -
使用更快的jackson来使用oneToMany映射序列化对象(Use faster jackson to serialize object with oneToMany mappings)[2022-02-05]
public String getObjectAsString() { //orderObjs : Considering this is the list of objects of class Order ObjectMapper objMapper = new ObjectMapper(); returnValue = objMapper.writerWithType( objMapper.getTypeFactory ... -
要获得所需的结果,接口中的相同方法也必须由@JsonSerialize注释 interface MapView { String getId(); @JsonSerialize(as = PointView.class) Point getPoint(); } To get the desired result also the same method in interface must be annotated by @JsonSerialize interface MapVie ...
-
在进一步搜索之后,我得出的结论是,如果不重写Jackson的序列化器,就不可能解决我的问题。 从Jackson邮件列表中,我得到了这个答案: 您可以覆盖(de)用于JsonNode序列化JsonNode ,并且可以用于更改多态类型ID的处理(对于预期类型ID的情况,存在单独的deserialize方法,类似于序列化程序)。 这可能会使您的案件得以处理。 我想这是确定的答案。 After searching further, I came to the conclusion it's not possible ...
-
使用默认的ObjectMapper您必须确保序列化的对象是Java Bean 。 对于非bean类,您可以使用m.setVisibility(PropertyAccessor.FIELD, Visibility.ANY);设置字段可见m.setVisibility(PropertyAccessor.FIELD, Visibility.ANY); 或使用@JsonAutoDetect(fieldVisibility = JsonAutoDetect.Visibility.ANY)注释您的类。 对于反序列化,您 ...
-
问题是由于一个非常深的对象不可序列化。 真的很深,很少。 谢谢大家。 The problem was due to a really deep object not serializable. Really deep and little. Thanks all.