データバインディングAPIは、JSON変換および属性を使用してアクセスするか、注釈POJO(通常のJavaオブジェクト)を使用するために使用されます。ここにそれの2つのタイプがあります。
シンプルなデータバインディング - JSONをJavaマップ、リスト、文字列、数字、ブール膜、ヌルオブジェクトから変換します。
完全なデータバインディング - JSONをJavaタイプに変換します。次の章で別々にバインドします。
ObjectMapperは、JSONの2種類のデータバインディングを読み取り/書き込みます。データバインディングの最も便利な方法は、XMLのようなJaxbパーサーに対するものです。
単純なデータバインディング
単純なデータバインディングとは、JSONマッピングへのJavaコアデータ型を指します。次の表には、JSONタイプとJavaタイプの関係を示します。
単純なデータ操作バインディングを見てみましょう。ここでは、Javaプリミティブタイプを直接JSONとマッピングし、その逆をマッピングします。
ディレクトリC:/> jackson_workspaceでJackSontesterという名前のJavaクラスファイルを作成します。
ファイル:JackSontester.java
java.io.file;インポートjava.io.ioexception; Import java.util.hashmap; import java.util.map; import org.codehaus.jackson.jsongenerateexception; Import org.codehaus.jackson.jackson.jsonparseexception; Import org.codeaus.jackson.map.jsonmapp.jsonmapp.jsonmapsexcept org.codehaus.jackson.map.objectmapper; public class jacksontester {public static void main(string args []){jacksontester tester = new JackSontester(); try {objectMapper mapper = new objectMapper(); map <string、object> sustentdatamap = new Hashmap <String、object>(); int [] marks = {1,2,3};学生学生= new Student(); Student.Setage(10); Student.setName( "Mahesh"); // Java Object StudentDatamap.put( "Student"、Student); // Java String StudentDatamap.put( "name"、 "Mahesh Kumar"); // Java Boolean StudentDatamap.put( "verified"、boolean.false); // Array StudentDatamap.put( "marks"、marks); mapper.writeValue(new File( "sustent.json")、sustentDatamap); // sustent.json // {// "desute":{"name": "mahesh"、 "age":10}、// "marks":[1,2,3]、// "quarified":false、/"name": "mahesh kumar" //} sustentdatamap = mapper.readvalue(emp file(desturn "); system.out.println(sustentdatamap.get( "sudent")); system.out.println(sustentdatamap.get( "name")); System.out.println(sustentDatamap.get( "verified")); system.out.println(sustentdatamap.get( "marks")); } catch(jsonparseexception e){e.printstacktrace(); } catch(jsonmappingException e){e.printstacktrace(); } catch(ioexception e){e.printstacktrace(); }}} class Student {private string name;プライベートインクエイジ; 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 "sudent [name:"+ name+ "、age:"+ age+ "]"; }}検証結果
Javacを使用して、次のクラスをコンパイルします。
コードコピーは次のとおりです。
C:/jackson_workspace> javac jacksontester.java
次に、JackSontesterを実行して結果を確認します。
コードコピーは次のとおりです。
C:/jackson_workspace> Java JackSontester
出力の結果を確認します
{name = mahesh、age = 10} mahesh kumarfalse [1、2、3]完全なデータバインディング
完全なデータバインディングとは、JSONマッピングを任意のJavaオブジェクトに指します。
// ObjectMapper InstanceObjectMapper Mapper = new objectMapper()を作成します。 // JSONコンテンツを学生にMapStudent Student = Mapper.ReadValue(new File( "desutent.json")、sustent.class);
単純なデータ操作バインディングを見てみましょう。ここでは、JavaオブジェクトをJSONに直接マッピングします。その逆も同様です。
JavaクラスファイルC:/> Jackson_WorkspaceにJackSontesterというディレクトリを作成します。
ファイル:JackSontester.java
java.io.file; Import java.io.ioexception; Import org.codehaus.jackson.jsongenerationecception; Import org.codehaus.jackson.jacsparseexception; import org.codehaus.jackson.map.jsonmappingexception; void main(string args []){jacksontester tester = new JackSontester(); try {desute desute = new Student(); Student.Setage(10); Student.setName( "Mahesh"); tester.writejson(学生); 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(学生学生)jsongenerationexception、jsonmappingexception、ioexception {objectmapper mapper = new objectMapper(); mapper.writevalue(new file( "desutent.json")、desudent); } private Student readjson()throws jsonparseexception、jsonmappingexception、ioexception {objectmapper mapper = new objectMapper();学生学生= mapper.readValue(new file( "Student.json")、Student.Class);学生を返します。 }} class Student {private string name;プライベートインクエイジ; 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 "sudent [name:"+ name+ "、age:"+ age+ "]"; }}検証結果
Javacを使用して、次のクラスをコンパイルします。
コードコピーは次のとおりです。
C:/jackson_workspace> javac jacksontester.java
次に、JackSontesterを実行して結果を確認します。
コードコピーは次のとおりです。
C:/jackson_workspace> Java JackSontester
コピーコードが次のようにコピーされていることを確認してください。
学生[名前:マヘシュ、年齢:10]