Json基础教程
Jackson教程
- Jackson介绍
- Jackson入门程序
- Jackson ObjectMapper实现JSON实际的读/写
- Jackson对象序列化/反系列化
- Jackson数据绑定
- Jackson JSON映射到任何Java对象
- Jackson使用具体的Java对象和类型强制转换到JSON使用
- Jackson树模型JsonNode
- Jackson流式API JsonGenerator、JsonParser
Gson教程
开源项目
知识点
相关文章
更多最近更新
更多Jackson JSON映射到任何Java对象
2019-05-09 23:27|来源: 网路
全屏
完全数据绑定是指JSON映射到任何Java对象。
//Create an ObjectMapper instance ObjectMapper mapper = new ObjectMapper(); //map JSON content to Student object Student student = mapper.readValue(new File("student.json"), Student.class); //map Student object to JSON content mapper.writeValue(new File("student.json"), student);
让我们来看看简单的数据操作绑定。在这里,我们将直接映射Java对象到JSON,反之亦然。
创建一个名为JacksonTester在Java类文件目录 C:\>Jackson_WORKSPACE.
File: 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 ]
相关问答
更多-
想要隐藏Jackson所映射到JSON的对象的一些字段(Want to hide some fields of an object that are being mapped to JSON by Jackson)[2023-07-22]
你有两个选择: 杰克逊在领域的设置者 - 吸气者上工作。 所以,你可以删除你想在JSON中省略的字段getter。 (如果你不需要在其他地方获得)。 或者,您可以在该字段的getter方法上使用Jackson的@JsonIgnore 注释,并在结果JSON中看到没有这样的键值对。 @JsonIgnore public int getSecurityCode(){ return securityCode; } You have two options: Jackson works on setters ... -
无法使用jackson API将json字符串映射到java对象(Unable to map json string to java object using jackson API)[2021-11-08]
您正在使用JAXB注释,因此您需要使用正确的模块正确配置ObjectMapper ; 你需要jackson-module-jaxb-annotations项目。 使用您喜欢的依赖管理系统添加它,并像这样使用它: JaxbAnnotationModule module = new JaxbAnnotationModule(); // configure as necessary objectMapper.registerModule(module); 注意:这是针对Jackson 2.x. Jackson ... -
这里的问题是OP混合了两种不同的Jackson版本: 1.9来自org.codehaus ( org.codehaus.jackson.map.exc.UnrecognizedPropertyException显示) 来自com.fasterxml 2.x(在进口import com.fasterxml.jackson.annotation.可见import com.fasterxml.jackson.annotation. ) 正如山姆在评论中指出的那样,OP应该只使用一个版本。 使用2.x进行反序列化或 ...
-
尝试这样的事情。 public class OuterClass{ @JsonProperty("product") public Product product; } OuterClass outerObject = mapper.readValue(new File("input.txt"), OuterClass.class); 然后你可以使用它outerObject.product try something like this. public class OuterClass{ ...
-
在这里你混合了gson和Jackson 。 你正在使用Jackson宣布,但是使用GSON's方法来取消它。 使用Jackson's objectMapper进行反序列化。 例如: ObjectMapper mapper = new ObjectMapper(); EspIncidentTrial staff = mapper.readValue(json, EspIncidentTrial.class); Here you are mixing gson and Jackson. You are usi ...
-
以下是我在代码中看到的问题列表: @JsonIgnoreProperties属性应该放在MovieResponse类之上,而不是Movie类。 查看文档 ,最值得注意的是有关“ignoreUnknown”属性的内容,默认为false: public abstract boolean ignoreUnknown 定义在反序列化期间是否可以忽略任何无法识别的属性的属性。 如果为true,则无法识别所有无法识别的属性(即, 没有可接受它们的setter或创建者)将被忽略而不会发出警告(尽管仍会调用未知属性的处理程 ...
-
使用Jackson将Json文件映射到POJO所需的@JsonProperty(@JsonProperty Required for Mapping Json File to POJO Using Jackson)[2023-08-14]
默认情况下,Jackson只会使用getter,setter和public字段将Java对象映射到JSON,反之亦然。 您可以将@JsonProperty注释添加到要映射的每个字段,也可以提供公共getter和setter,也可以使用@JsonAutoDetect注释告诉Jackson使用类的字段: @JsonAutoDetect(fieldVisibility = Visibility.ANY, getterVisibility = Visibility.NONE, setterVisibility = ... -
您正在使用JAX-RS注释而不是Spring Web服务注释。 你可以使这个工作,但我建议使用默认的Spring注释,因为如果你使用spring boot starter依赖项,那些都是为你自动配置的。 首先 - 您需要创建像请求和响应一样设置的类。 像这样的东西: public class ThirdPartyResponse { MetaData meta; Response response; } public class Response { List没有开箱即用的配置,但应该很容易实现Jackson 2.0 AnnotationIntrospector(可能扩展JacksonAnnotationIntrospector )并使其除了2.x注释之外或代替2.x注释使用Jackson 1.x注释。 实际上,你基本上可以使用1.x JacksonAnnotationIntrospector并替换它的用法。 2.0不会也不会直接支持1.x注释的原因是它会引入额外的依赖关系,并可能导致版本冲突。 但这并不妨碍外部图书馆这样做 - 事实上,如果有人想做出贡献,我相 ...JSON有效,但不适用于Map。 params的值是一个数组,它应该是一个像这样的对象: { "params": { "acks": "all", "retries": 0, "batch.size": 16384, "linger.ms": 1, "buffer.memory": 33554432, "key.serializer": "org.apache.kafka.common.serializa ...