開発プロセス中、多くの場合、他のシステムとデータを交換する必要があります。データ交換の形式にはXML、JSONなどが含まれます。JSONは、XMLよりも効率的な軽量データ形式です。 XMLは、間違いなくネットワークトラフィックを占めるタグをたくさん必要とします。 Jsonはこの点で良い仕事をしています。 JSONの形式を見てみましょう。
JSONには2つの形式を持つことができます。1つはオブジェクト形式で、もう1つは配列オブジェクトです。
{"name": "json"、 "address": "xicheng地区、北京"、 "age":25} // jsonのオブジェクト形式文字列
[{"name": "json"、 "address": "xicheng地区、北京"、 "age":25}] //データオブジェクト形式
上記の2つの形式から、オブジェクト形式と配列オブジェクト形式の唯一の違いは、[]が[]オブジェクト形式に追加されることであることがわかります。次に、特定の構造を見てください。どちらも、英語の状態でコンマ()で区切られたキー価値のペアの形で現れることがわかります。
この形式は、データ送信がフロントエンドおよびバックエンドで実行される場合にも非常に人気があります。バックエンドは、JSON形式の文字列を返します。フロントエンドは、JSのjson.parse()メソッドを使用してJSON文字列をJSONオブジェクトに解析し、次にフロントエンドを使用するためにトラバーサルを使用します。
このトピックにアクセスして、JavaのJSONオブジェクトとJavaオブジェクトの間の相互変換を紹介しましょう。
JSONオブジェクトとJavaオブジェクト間の相互転送を実現するには、サードパーティのJARパッケージを使用する必要があります。 JSON-LIBパッケージはここで使用されています。ダウンロードアドレスは、https://sourceforge.net/projects/json-lib/です。 JSON-LIBには、Commons-Beanutils-1.8.0.jar、Commons-Collections-3.2.1.jar、Commons-Lang-2.5.Jar、Commons-Logging-1.1.jar、およびEzmorph-1.0.6.jarの5つのパッケージのサポートが必要です。自分でインターネットからダウンロードできます。ダウンロードアドレスはここに掲載されなくなります。
JSON-LIBは、JSonObject、JsonArrayなど、この関数を完了できるいくつかのクラスを提供します。クラスの名前から、変換されたjsonObjectはオブジェクト形式である必要があり、jsonarray変換されたjsonarrayは配列オブジェクト(つまり、[])であることがわかります。
1。Javaの通常のオブジェクトとJSON文字列の相互転送
Java Object-- 》》文字列
通常のJavaオブジェクトは、JavaのJava Bean、つまりエンティティクラスを指します。
パッケージcom.cn.study.day3;パブリッククラスの学生{//プライベート文字列名; //年齢プライベート文字列年齢; //アドレスプライベートストリングアドレス; public name getname(){return name;} public void setname(string name){this.name = name;} public string getage(){return age = public String()getアドレス;} public void setAddress(string address){this.address = address;}@overridepublic string toString(){return "sustent [name =" + name + "、age =" + age + "、address =" + address + "];}}}}上記は私の通常のJavaエンティティクラスです。JSON-LIBがそれを文字列形式に変換する方法をご覧ください、
public static void convertobject(){sudine stu = new sustent(); stu.setname( "json"); stu.setage( "23"); stu.setaddress( "beijing xicheng地区"); // 1。 jsonobjectjsonobject json = jsonobject.fromobject(stu); // 2を使用します。 jsonarrayjsonarray array = jsonarray.fromobject(stu); string strjson = json.tostring(); string strarray = array.tostring(); system.out.println( "+strjson); system.out.println(" strarray: "+strarray);学生のエンティティクラスを定義し、それぞれJSonObjectとJsonArrayを使用してJSON文字列に変換しました。以下に印刷された結果を見てみましょう。
strjson:{"address": "xicheng地区、北京"、 "age": "23"、 "name": "json"}
ストレイ:[{"アドレス": "xicheng地区、北京"、「age ":" 23 "、" name ":" json "}]
結果から、両方の方法でJavaオブジェクトをJSON文字列に変換できることがわかりますが、変換された構造は異なります。
JSON String-》》Javaオブジェクト
上記では、JavaオブジェクトをJSON文字列に変換する方法を説明しています。 JSON文字列形式をJavaオブジェクトに変換する方法を見てみましょう。
まず、2つの文字列を異なる形式で定義する必要があります。二重引用符を使用/エスケープする必要があります。
public static void jsonstrojava(){//異なる形式の2つの文字列string objectstr = "{/" name/":/" json/"、/" age/":/" 24/"、/" address/":/" xicheng地区、北京/"}";弦arrayStr = "[{/" name/":/" json/"、/" age/":/" 24/"、/" address/":/"北京Xicheng地区、北京/"}]"; // 1。 jsonobjectjsonobject jsonobject = jsonobject.fromobject(objectStr); sustent stu =(desute)jsonobject.tobean(jsonobject、student.class); // 2を使用します。 jsonarrayjsonarray jsonarray = jsonarray.fromobject(arraystr); // jsonarrayオブジェクトの最初の要素o = jsonarray.get(0); jsonobject jsonobject.fromobject(o); desute stu2 =(desute)jsonobject.tobean(jsonobject2、jsonobject2、jsonobject(o); Student.class); System.out.println( "stu:"+stu); system.out.println( "stu2:"+stu2);}印刷の結果は次のとおりです。
STU:学生[name = json、age = 24、address = xicheng地区、北京]
Stu2:学生[name = json、age = 24、address = xicheng地区、北京]
上記のコードからわかるように、JSonObjectを使用するとJSON形式の文字列をJavaオブジェクトに簡単に変換できますが、JSonArrayを使用するのはそれほど簡単ではありません。「[]」シンボルがあるため、JsonArrayオブジェクトを取得した後、必要な学生の変形であり、JSonObjectを使用して簡単に取得します。
2。リストとJSON文字列の転送
リスト-》》JSON文字列
public static void listtojson(){desute stu = new Student(); stu.setname( "json"); stu.setage( "23"); stu.setaddress( "beijing haidian district"); list <sudent> lists = new arraylist <sudent>(); lists.add(stu); // 1。 jsonobject // jsonobject listobject = jsonobject.fromobject(list); // 2を使用します。 jsonarrayjsonarray listArray = jsonarray.fromobject(lists); // system.out.println( "listobject:"+listobject.toString()); system.out.println( "listArray:"+listArray.toString();}を使用します。JsonObjectを使用して賭けました。コメントの前の結果を見てみましょう。
スレッド「メイン」net.sf.json.jsonexception: 'object'は配列です。代わりにjsonarrayを使用してください
例外があることを教えてください。ソースコードをチェックすることにより、FromObjectメソッドを使用するときに、最初にパラメータータイプを判断することがわかりました。ここでは、アレイリストが使用されるため、渡されたパラメーターはアレイタイプであることを伝えます。コメントの後の結果を見てみましょう。
ListArray:[{"address": "Haidian地区、北京"、「年齢 ":" 23 "、" name ":" json "}]
この結果は正常です。
json文字列-》》リスト
上記の例から、リストオブジェクトは配列オブジェクトの形式にのみ変換できることがわかります。それでは、文字列から以下のリストへの変換を見てみましょう。
public static void jsontolist(){string arraystr = "[{/" name/":/" json/"、/" age/":/" 24/"、/" address/":/" beijing xicheng district/"}]; // forthing.class); for(sustent stu:list2){system.out.println(stu);} //アレイ学生に変換[] ss =(desudent [])jsonarray.toarray(jsonarray.fromobject(arraystr)、sudints.class);結果を印刷し、
学生[name = json、age = 24、address = xicheng地区、北京]
学生[name = json、age = 24、address = xicheng地区、北京]
文字列の形式は「[]」を使用して形式であるため、ここでJSonArrayオブジェクトが選択されています。前者は、Javaの配列、またはJavaのリストに変換されます。ここには対応するエンティティクラスがあるため、使用するときに汎用(sustent.class)のタイプが指定されるため、変換されたオブジェクトを取得できます。
3。マップとJSON文字列変換
マップ-》》 JSON文字列
public static void maptojson(){desute stu = new Student(); stu.setname( "json"); stu.setage( "23"); stu.setAddress( "Shanghai、China"); Map <String、Stu> Map = new Hashmap <String、Stund>(); Map.put( "、Stu); jsonobjectjsonobject mapobject = jsonobject.fromobject(map); system.out.println( "mapobject"+mapobject.toString()); // 2。 jsonarrayjsonarray maparray = jsonarray.fromobject(map); system.out.println( "maparray:"+maparray.tostring());}結果を印刷し、
MapObject {"First":{"address": "Shanghai、China"、 "age": "23"、 "name": "json"}}
MapArray:[{"First":{"address": "shanghai、china"、 "age": "23"、 "name": "json"}}]
上に2つのフォームが印刷されています。
JSON文字列-》》マップ
JSON文字列は、マップオブジェクトに直接変換することはできません。マップ内のキーに対応する値を取得するには、他の方法が必要です。
public static void jsontomap(){string strobject = "{/" first/":{/" address/":/" shanghai、china/"、/" age/":/" 23/"、/" name/":/" json/"}}" hashmap(); map.put( "first"、sustent.class); //トビーンメソッドが使用され、mybeanには3つのパラメーターが必要ですmy =(mybean)jsonobjec.tobean(jsonobject、mybean.class、map); system.out.println(my.getfirst();};}結果を印刷し、
学生[name = json、age = 23、住所=上海、中国]
以下はMyBeanのコードです。
パッケージcom.cn.study.day4; Import java.util.map; import com.cn.study.day3.student; public class mybean {private entudent first; public sudent getfirst(){return first;} public void setfirst(student first){this.first = first;}}}}Tobean()メソッドを使用して、3つのパラメーターが渡され、1つ目はjsonObjectオブジェクト、2つ目はmybean.class、3つはマップオブジェクトです。 MyBeanを通じて、このクラスに最初の属性がなければならないことを知ることができます。そのタイプは学生であり、マップ内のキーと値のタイプ、つまり最初のキータイプに対応する値のタイプに対応しています。
上記は、編集者が紹介したJSON文字列とJavaオブジェクトの相互変換例の詳細な説明です。それがあなたに役立つことを願っています!