この記事では、Javaに基づいてJSONを解析する3つの方法を分析します。次のように、参照のために共有してください。
1。JSONとは何ですか?
JSONは、XMLを置き換えるデータ構造です。 XMLと比較して、それは小さくなりますが、説明機能が良好です。その小ささにより、ネットワークはデータを送信して、より多くのトラフィックを削減し、スピードアップします。
JSONは一連の文字列ですが、要素には特定のシンボルが付いています。
{}ダブルブラケットはオブジェクトを表します
[]ブラケットは配列を表します
""二重引用符には属性または値があります
:コロンは、後者が前者の値であることを示しています(この値は、文字列、数字、または別の配列またはオブジェクトである可能性があります)
{"name": "Michael"}は、マイケルとして名前を含むオブジェクトとして理解できます
および[{"name": "michael"}、{"name": "jerry"}]は、2つのオブジェクトを含む配列を意味します
もちろん、{"name":["michael"、 "jerry"]}を使用して、上記を簡素化することもできます。これは、名前の配列を持つオブジェクトです。
2。従来のJSON分析:JSON分析
1。JSON文字列を生成します
public static string createjsonstring(string key、object value){jsonobject jsonobject = new jsonobject(); jsonobject.put(key、value); jsonobject.toString();}を返します2。JSON文字列を解析します
これは、次の3つの状況に分かれています。Javabean、リスト配列、およびネストされたマップを備えたリストアレイ:
java.util.arraylist; Import java.util.hashmap; import java.util.iterator; import java.util.list; import java.util.map; import org.jsonarray; import org.json.jsonobject; import com.android.myjson.myson.domin.domin.domin.domin.domin.domain.domain.domain.domain.domain.domain.domain。 jsontools {public static person getPerson(string key、string jsonstring){person person = new person(); try {jsonobject jsonobject = new jsonobject(jsonstring); jsonobject personobject = jsonobject.getjsonobject( "person"); person.setId(personobject.getint( "id")); person.setname(personobject.getString( "name")); person.setAddress(personobject.getString( "アドレス")); } catch(Exception E){// TODO:例外を処理} return person; } public static list getPersons(string key、string jsonstring){list list = new arrayList(); try {jsonobject jsonobject = new jsonobject(jsonstring); // json jsonarray jsonarray = jsonobject.getjsonarray(key)の配列を返します。 for(int i = 0; i <jsonarray.length(); i ++){jsonobject jsonobject2 = jsonarray.getjsonobject(i);人の人= new Person(); person.setid(jsonobject2.getint( "id")); person.setname(jsonobject2.getString( "name")); person.setAddress(jsonobject2.getString( "アドレス")); list.add(person); }} catch(Exception E){// todo:handle exception} return list; } public static list getList(string key、string jsonstring){list list = new ArrayList(); try {jsonobject jsonobject = new jsonobject(jsonstring); jsonarray jsonarray = jsonobject.getjsonarray(key); for(int i = 0; i <jsonarray.length(); i ++){string msg = jsonarray.getString(i); list.add(msg); }} catch(Exception E){// todo:handle exception} return list; } public static list> listkeymaps(string key、string jsonstring){list> list = new ArrayList>(); try {jsonobject jsonobject = new jsonobject(jsonstring); jsonarray jsonarray = jsonobject.getjsonarray(key); for(int i = 0; i <jsonarray.length(); i ++){jsonobject jsonobject2 = jsonarray.getjsonobject(i);マップマップ= new Hashmap(); iterator iterator = jsonobject2.keys(); while(iterator.hasnext()){string json_key = iterator.next();オブジェクトjson_value = jsonobject2.get(json_key); if(json_value == null){json_value = ""; } map.put(json_key、json_value); } list.add(map); }} catch(Exception E){// todo:handle exception} return list; }}3。JSONのGSON分析
1。JSON文字列を生成します
com.google.gson.gson; public class jsonutils {public static string createjsonobject(object obj){gson gson = new gson(); string str = gson.tojson(obj); strを返します。 }}2。JSONを分析します
java.util.arraylist;インポートJava.util.list; Import java.util.map; import com.google.gson.gson; import com.google.gson.refllect.typetoken ;; public class gsontools {public gsontools(){// dodo auto auto-generated crustertor stubm * @parm * dsction @param cls * @return */ public static t getPerson(string jsonstring、class cls){t t = null; try {gson gson = new gson(); t = gson.fromjson(jsonstring、cls); } catch(Exception E){// TODO:ハンドル例外} return t; } / ** * gsonを使用してリストを解析します * * @param * @param jsonstring * @param cls * / public static list getPersons(string jsonstring、class cls){list list = new ArrayList(); try {gson gson = new gson(); list = gson.fromjson(jsonstring、new typetoken>(){} .getType()); } catch(例外e){} returnリスト; } / ** * @param jsonstring * @return * / public static list getlist(string jsonstring){list list = new arrayList(); try {gson gson = new gson(); list = gson.fromjson(jsonstring、new typetoken>(){} .getType()); } catch(Exception E){// TODO:例外を処理}返品リスト。 } public static list> listkeymaps(string jsonstring){list> list = new ArrayList>(); try {gson gson = new gson(); list = gson.fromjson(jsonstring、new typetoken >>(){} .getType()); } catch(Exception E){// TODO:例外を処理}返品リスト。 }}4。FastJsonの解析
Import java.util.arraylist; Import java.util.list; import java.util.map; import com.alibaba.fastjson.json; Import com.alibaba.fastjson.typereference; public class jsontool {public static t getsersing、class cls){t = null; try {t = json.parseobject(jsonstring、cls); } catch(Exception E){// TODO:ハンドル例外} return t; } public static list getPersonList(String JSonstring、class CLS){list list = new arrayList(); try {list = json.parsearray(jsonstring、cls); } catch(Exception E){// TODO:例外を処理}返品リスト。 } public static list> getPersonListMap1(string jsonstring){list> list = new ArrayList>(); try {list = json.parseObject(jsonstring、new Typereference >>(){} .getType()); } catch(Exception E){// TODO:例外を処理}返品リスト。 }}要約:
特にネットワーク環境が悪い場合やトラフィックの制限がある場合、JSONはトラフィックを節約し、XML形式のデータ送信と比較してより高い伝送効率を得ることができます。これら3つの分析方法のうち、FastJSONが最も効率的であり、推奨されます。
PS:JSON操作に関しては、参照用の実用的なJSONオンラインツールを次に示します。 オンラインJSONコード検証、検査、美化、フォーマットツール: JSONオンラインフォーマットツール: オンラインXML/JSON相互変換ツール: JSONコードオンラインフォーマット/美化/圧縮/編集/変換ツール: オンラインJSON圧縮/脱出ツール: C言語スタイル/HTML/CSS/JSONコードのフォーマットおよび美化ツール:
http://tools.vevb.com/code/json
http://tools.vevb.com/code/jsonformat
http://tools.vevb.com/code/xmljson
http://tools.vevb.com/code/jsoncodeformat
http://tools.vevb.com/code/json_yasuo_trans
http://tools.vevb.com/code/ccode_html_css_json
この記事がみんなのJavaプログラミングに役立つことを願っています。