开源项目

知识点

相关文章

更多

最近更新

更多

Jackson入门程序

2019-05-09 23:17|来源: 网路

再进入学习jackson库的细节之前,让我们来看看应用程序操作功能。在这个例子中,我们创建一个Student类。将创建一个JSON字符串学生的详细信息,并将其反序列化到学生的对象,然后将其序列化到JSON字符串。

创建一个名为JacksonTester在Java类文件 C:\>Jackson_WORKSPACE.

文件: JacksonTester.java

import java.io.IOException;
import org.codehaus.jackson.JsonParseException;
import org.codehaus.jackson.map.JsonMappingException;
import org.codehaus.jackson.map.ObjectMapper;
import org.codehaus.jackson.map.SerializationConfig;

public class JacksonTester {
   public static void main(String args[]){
      ObjectMapper mapper = new ObjectMapper();
      String jsonString = "{\"name\":\"Mahesh\", \"age\":21}";

      //map json to student
      try {
         Student student = mapper.readValue(jsonString, Student.class);
         System.out.println(student);
         
         mapper.enable(SerializationConfig.Feature.INDENT_OUTPUT);
         jsonString = mapper.writeValueAsString(student);
         System.out.println(jsonString);

      } catch (JsonParseException e) {
         e.printStackTrace();
      } catch (JsonMappingException e) {
         e.printStackTrace();
      } catch (IOException e) {
         e.printStackTrace();
      }
   }
}

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: 21 ]
{
  "name" : "Mahesh",
  "age" : 21
}

步骤 - 需要记住

以下是这里要考虑的重要步骤。

第1步:创建ObjectMapper对象。

创建ObjectMapper对象。它是一个可重复使用的对象。

ObjectMapper mapper = new ObjectMapper();

第2步:反序列化JSON到对象。

从JSON对象使用readValue()方法来获取。通过JSON字符串和对象类型作为参数JSON字符串/来源。

//Object to JSON Conversion
Student student = mapper.readValue(jsonString, Student.class);

第3步:序列化对象到JSON。

使用writeValueAsString()方法来获取对象的JSON字符串表示。

//Object to JSON Conversion		
jsonString = mapper.writeValueAsString(student);


相关问答

更多
  • 猜数字 import java.util.Scanner; public class Guess{ public static void main(String[] args){ int x = (int)(Math.random()*10);//从0~9中随机生成一个数 Scanner in = new Scanner(System.in); int input = in.nextInt();//玩家输入 if(input == x) System.out.println("correct!");//答对 ...
  • 从hello world开始 建议不要学JAVA的GUI 学习JAVA 的WEB开发,即 J2EE J2EE最主要就是hibernate,spring,struts2这几个架构,也叫SSH 搞懂这几个架构,用他们搭建一个网站,熟练一下,就可以去找工作了。 另外JAVA最重要的思想是设计模式,优雅的设计比高效率的设计更加重要。反射,代理,工厂等模式,这些都要了解清楚。 最后,JAVA跟数据库是密不可分的,你还要了解下数据库。
  • WebSphere Liberty将使用您使用JAX-RS 2.0指定的Jackson版本,以及一些注意事项(我们正在追逐)。 答)您仍然需要明确指定JSON提供者。 B)您可能会看到一个16.0.0.2的NPE,如下所述: 注册者JacksonJsonProvider在Websphere Liberty配置文件中 。 如上所述,我们已经解决了这个问题 最新的测试版不会显示此行为,这表明下次运行时更新不会。 示例: https : //github.com/gameontext/gameon-mediato ...
  • 使用ContextResolver如本文所示。 使用@Provider注释,应该从扫描中拾取@Provider (假设您正在使用某种扫描;包扫描或类路径扫描) @Provider public class ObjectMapperContextResolver implements ContextResolver { final ObjectMapper mapper = new ObjectMapper(); public ObjectMapperConte ...
  • 我没有看到任何注释或配置选项。 您可以在序列化之前使用hibernate-validator验证对象。 由于您不想添加自定义注释,因此可以通过在序列化之前验证对象来修改默认序列化程序。 首先创建一个自定义序列化程序,它将另一个作为构造函数参数,并使用hibernate验证器来验证对象并抛出异常。 class ValidatingSerializer extends JsonSerializer { private final JsonSerializer defaul ...
  • 我找到了解决办法,或者这可能是合适的解决方案。 无论哪种方式,它似乎都有效。 如果有更好的方法,请告诉我。 (我觉得应该有) 我定义了一个实现Map的内部类,并将该类的实例提供给JsonGenerator.writeObject()而不是为它提供Map 。 一旦通用声明被“隐藏”,Jackson似乎能够解析键和值类型,并为创建的MapSerializer提供非null的MapSerializer ,从而产生所需的JSON输出。 对测试源代码的以下添加/修改生成所需的输出。 p ...