ジャクソンの最初のプログラム
Jackson Libraryの詳細を入力する前に、アプリケーション操作機能を見てみましょう。この例では、学生クラスを作成します。 JSON文字列が作成され、学生のオブジェクトに脱色され、JSON文字列にシリアル化されます。
JackSontester C:/> Jackson_workspaceという名前のJavaクラスファイルを作成します。
ファイル:JackSontester.java
java.io.ioexception; Import org.codehaus.jackson.jsonparseexception; Import org.codehaus.jackson.jackson.map.jsonmappingexception; Import org.codehaus.jackson.map.objectmapper; Import org.codehaus.jackson.map.serializeconfig; public vaidconfig; public vaidtentest estingsconfig; args []){objectmapper mapper = new objectMapper(); string jsonstring = "{/" name/":/" mahesh/"、/" age/":21}"; // jsonを学生にマップしてみてくださいsystem.out.println(学生); mapper.enable(serializationconfig.feature.indent_output); jsonstring = mapper.writevalueasstring(desute); System.out.println(jsonstring); } 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
出力を確認します
学生[名前:マヘシュ、年齢:21] {"name": "mahesh"、 "age":21}手順 - ここに考慮すべき重要な手順があります。
ステップ1:ObjectMapperオブジェクトを作成します。
ObjectMapperオブジェクトを作成します。それは再利用可能なオブジェクトです。 /
コードコピーは次のとおりです。
ObjectMapper mapper = new objectMapper();
ステップ2:JSONをオブジェクトに脱直します。
readValue()メソッドを使用して、JSONオブジェクトから取得します。 JSON文字列/ソースは、パラメーターJSON文字列およびオブジェクトタイプとして渡されます。
// JSON ConversionStudent Student = Mapper.ReadValue(jSonstring、Student.class);
ステップ3:オブジェクトをJSONにシリアル化します。
WriteValueAsstring()メソッドを使用して、オブジェクトのJSON文字列表現を取得します。
// JSON変換jsonstring = mapper.writevalueasstring(desute);
ジャクソンツリーモデル
ツリーモデルは、JSONファイルのメモリツリー表現を準備します。 ObjectMapperはJSonNodeノードツリーを構築します。これは最も柔軟なアプローチです。 Dom ParserのXMLに似ています。
JSONからツリーを作成します
ObjectMapperは、JSONを読んだ後、ポインターツリールートノードを提供します。ルートノードを使用して、完全なツリーを通過できます。 JSON文字列を提供するルートノードを取得するには、次のコードスニペットを検討してください。
// ObjectMapper InstanceObjectMapper Mapper = new objectMapper()を作成します。 string jsonstring = "{/" name/":/" mahesh kumar/"、/" age/":21、/" verified/":false、" marks/":[100,90,85]}"; // jsonjsonnode rootnode = mappper.readtree(jsonstring);トラバーサルツリーモデル
トラバーサルツリーのルートノードへの相対パスを使用し、データを処理して各ノードを取得します。提供されたルートノードのツリーの次のコードスニペットトラバーサルを考慮してください。
jsonnode namenode = rootnode.path( "name"); system.out.println( "name:"+ namenode.getTextValue()); jsonnode marksnode = rootnode.path( "marks"); iterator iterator = marksnode.getElements();
例JavaクラスC:/> Jackson_workspaceでJackSontesterというファイルディレクトリを作成します。
ファイル:JackSontester.java
java.io.ioexception; Import java.util.iterator; import org.codehaus.jackson.jsonnode; Import org.codehaus.jackson.jconparseexception; Import org.codehaus.jackson.map.jsonmappingexception; Import org.codehaus.jackson.map.bidmectmecter; main(string args []){jacksontester tester = new JackSontester(); try {objectMapper mapper = new objectMapper(); string jsonstring = "{/" name/":/" mahesh kumar/"、/" age/":21、/" verified/":false、/" marks/":[100,90,85]}"; jsonnode rootnode = mappper.readtree(jsonstring); jsonnode namenode = rootnode.path( "name"); System.out.println( "name:"+ namenode.getTextValue()); jsonnode agenode = rootnode.path( "age"); System.out.println( "age:" + agenode.getIntValue()); jsonnode verifiedNode = rootnode.path( "verified"); system.out.println( "verified:" +(verifiedNode.getBooleanValue()? "yes": "no")); jsonnode marksnode = rootnode.path( "marks"); iterator <JSonnode> iterator = marksnode.getElements(); System.out.print( "marks:["); while(iterator.hasnext()){jsonnode marks = iterator.next(); System.out.print(marks.getIntValue() + ""); } system.out.println( "]"); } catch(jsonparseexception e){e.printstacktrace(); } catch(jsonmappingException e){e.printstacktrace(); } catch(ioexception e){e.printstacktrace(); }}}出力の結果を確認します
Javacを使用して、次のクラスをコンパイルします。
コードコピーは次のとおりです。
C:/jackson_workspace> javac jacksontester.java
次に、JackSontesterを実行して結果を確認します。
コードコピーは次のとおりです。
C:/jackson_workspace> Java JackSontester
出力を確認します
名前:Mahesh Kumarage:21verified:nomarks:[100 90 85]
木からJSON変換
この例では、jsonnodeを使用してJSONファイルに書き込み、再度読み戻してツリーを作成しました。
JavaクラスファイルC:/> Jackson_WorkspaceにJackSontesterというディレクトリを作成します。
ファイル:JackSontester.java
java.io.file; Import java.io.ioexception; Import java.util.iterator; Import org.codehaus.jackson.jsonnode; Import org.codehaus.jackson.jsonparseexcepsection; Import org.codehaus.jackson.map.jsonmaptexception; org.codehaus.jackson.node.arraynode; import org.codehaus.jackson.node.objectnode; public class jacksontester {public static void main(string args []){jacksontester tester = new jacksontester(); try {objectMapper mapper = new objectMapper(); jsonnode rootnode = mapper.createObjectNode(); jsonnode marksnode = mapper.createarraynode(); ((arraynode)marksnode).add(100); ((arraynode)marksnode).add(90); ((arraynode)marksnode).add(85); ((objectNode)rootnode).put( "name"、 "mahesh kumar"); ((objectNode)rootnode).put( "age"、21); ((objectNode)rootnode).put( "verified"、false); ((objectNode)rootnode).put( "marks"、marksnode); mapper.writeValue(new File( "sustent.json")、rootnode); rootnode = mapper.readtree(new file( "sustent.json")); jsonnode namenode = rootnode.path( "name"); System.out.println( "name:"+ namenode.getTextValue()); jsonnode agenode = rootnode.path( "age"); System.out.println( "age:" + agenode.getIntValue()); jsonnode verifiedNode = rootnode.path( "verified"); system.out.println( "verified:" +(verifiedNode.getBooleanValue()? "yes": "no")); jsonnode marksnode1 = rootnode.path( "marks"); iterator <Jsonnode> iterator = marksnode1.getElements(); System.out.print( "marks:["); while(iterator.hasnext()){jsonnode marks = iterator.next(); System.out.print(marks.getIntValue() + ""); } system.out.println( "]"); } catch(jsonparseexception e){e.printstacktrace(); } catch(jsonmappingException e){e.printstacktrace(); } catch(ioexception e){e.printstacktrace(); }}}検証結果
Javacを使用して、次のクラスをコンパイルします。
コードコピーは次のとおりです。
C:/jackson_workspace> javac jacksontester.java
次に、JackSontesterを実行して結果を確認します。
コードコピーは次のとおりです。
C:/jackson_workspace> Java JackSontester
出力を確認します
名前:Mahesh Kumar
年齢:21
検証:いいえ
マーク:[100 90 85]
ツリーからJavaオブジェクトへの変換
この例では、jsonnodeを使用してJSONファイルに書き込み、読み戻し、生徒のオブジェクトを変換してツリーを作成しました。
JavaクラスファイルC:/> Jackson_WorkspaceにJackSontesterというディレクトリを作成します。
ファイル:JackSontester.java
java.io.file; Import java.io.ioexception; Import java.util.arrays; Import org.codehaus.jackson.jsonnode; Import org.codehaus.jackson.jsonparseexception; Import org.codehaus.jackson.map.jsonmappincection; org.codehaus.jackson.node.arraynode; import org.codehaus.jackson.node.objectnode; public class jacksontester {public static void main(string args []){jacksontester tester = new jacksontester(); try {objectMapper mapper = new objectMapper(); jsonnode rootnode = mapper.createObjectNode(); jsonnode marksnode = mapper.createarraynode(); ((arraynode)marksnode).add(100); ((arraynode)marksnode).add(90); ((arraynode)marksnode).add(85); ((objectNode)rootnode).put( "name"、 "mahesh kumar"); ((objectNode)rootnode).put( "age"、21); ((objectNode)rootnode).put( "verified"、false); ((objectNode)rootnode).put( "marks"、marksnode); mapper.writeValue(new File( "sustent.json")、rootnode); rootnode = mapper.readtree(new file( "sustent.json")); Student Student = Mapper.TreetoValue(RootNode、Student.Class); system.out.println( "name:"+ sustent.getName()); system.out.println( "age:" + sustent.getage()); System.out.println( "verified:" +(sustent.isverified()? "yes": "no")); system.out.println( "marks:"+arrays.toString(desutent.getMarks())); } catch(jsonparseexception e){e.printstacktrace(); } catch(jsonmappingException e){e.printstacktrace(); } catch(ioexception e){e.printstacktrace(); }}} class Student {string name; int age;ブール検証; int [] marks; 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 boolean isverified(){return verified; } public void setVerified(boolean verified){this.verified = verified; } public int [] getMarks(){return marks; } public void setMarks(int [] marks){this.marks = marks; }}検証結果
Javacを使用して、次のクラスをコンパイルします。
コードコピーは次のとおりです。
C:/jackson_workspace> javac jacksontester.java
次に、JackSontesterを実行して結果を確認します。
コードコピーは次のとおりです。
C:/jackson_workspace> Java JackSontester
出力を確認します
名前:Mahesh Kumarage:21verified:nomarks:[100 90 85]