Gson解析(詳細)

5295 ワード

まずAndroid原生の解析をご紹介します
AndroidにはJSONに関連する4つのクラスとExceptionsが含まれています.
JSONObject    JSONArray             JSONStringer JSONTokener JSONException
1,JSONObject  
{「JSON」:「Hello,World」},keyとvelue用:区切り.
JSOnObjectのインスタンスを初期化し、内部のput()メソッドを参照して数値を追加します:new JSOnObject().put(“JSON”, “Hello, World!”),キーとValueの間はカンマで区切られています.Valueのタイプには、Boolean、JSOnArray、JSOnObject、Number、String、またはデフォルト値JSOnObjectがある.NULL object. 2つの異なる値を取る方法があります:get():数値の存在を決定する条件で使用します.そうしないと、関連するKeyを取得できない場合、Exception情報が放出されます.opt():この方法は比較的柔軟で、指定した数値を取得できない場合、デフォルトの数値が返され、例外は放出されません.
2,JSONArray
   
  jsonarray,  jsonarray   jsonobject
//  json        。
JSONObject jsonObject = new JSONObject(String);
//    list     
JSONArray jsonArray = jsonObject.getJSONArray("list");

//    key ,    for(int i=0;i)
    {
        JSONObject jsonOb = (JSONObject)jsonArray.opt(i);
        int tel = jsonOb.getInt("tel");
    }

3,JSONStringer:
公式の解釈によると、このクラスはJSOntextの迅速かつ容易な作成を助けることができる.その最大の利点は,フォーマットの誤りによるプログラム異常を低減できることであり,このクラスを参照するとJSON構文規則(syntaxrules)に従ってJSON textを自動的に厳密に作成できることである.JSOnStringerエンティティごとに1つのJSON textしか作成できません.
String myString = new JSONStringer().object().key("name").value("  ").endObject().toString();  
//          JSON text:{"name" : "  "}

その中のobject()と.endObject()は、Object基準に従って数値に境界を追加するために同時に使用する必要があります.同様に、配列に対しても境界を生成するための標準的な方法のセットがある.Array()と.endArray().
4,JSOnTokener:これはシステムがJSOnObjectとJSOnArrayコンストラクタのためにJSON source stringを解析するクラスで、source stringから数値情報を抽出することができます.
5,JSONException:
JSONです.orgクラスから放出された異常情報.
gsonを使ってから、すべてが簡単になりました.
Gsonには2つの重要な方法があり,1つはtoJson,1つはfromJson,すなわちシーケンス化と逆シーケンス化である.たとえば、次のgson列を解析します.
{
	"name" : "Ravi Tamada", 
	"email" : "[email protected]",
	"phone" : {
		"home" : "08947 000000",
		"mobile" : "9999999999"
	}
	
}
    User
public class User {
private String name;
private String email;
private Phone phone;}
    Phone
 
   
public class Phone {
private String home;
private String mobile;}
         
 
   
Gson gson = new Gson();
User user = gson.fromJson(response.toString(), User.class);
mTextViewVolley.setText(user.getName()+"
"+user.getEmail()+"
"+"phone:"+user.getPhone().getHome());