AndroidはJSONObjectとGSONメソッドを使用してJSONフォーマットデータを解析する


ネットワーク上でデータを転送する際に最もよく使われる2つのフォーマットはXMLとJSONです.このうちJSON形式データ解析にはJSOnObject,GSONなどの方法がある.
サーバにget_が存在すると仮定します.data.jsonファイル、ファイル内容:
[{"id":"5","version":"5.5","name":"clash of clans"},
{"id":"6","version":"7.0","name":"boom beach"},
{"id":"7","version":"3.5","name":"clash royale"}]

OkHttpを使用してファイルをサーバに要求し、結果をjsonData文字列に保存したとします.
1.JSOnObject解析
JSONObjectは公式に提供された解析方法であり、具体的なコードは以下の通りである.
    private void parseJSONWithJSONObject(String jsonData){
        try{
            JSONArray jsonArray = new JSONArray(jsonData);//    JSON  ,          
            for(int i = 0;i < jsonArray.length();i++){
                JSONObject jsonObject = jsonArray.getJSONObject(i);//  JSONObject               
                String id = jsonObject.getString("id");
                String name = jsonObject.getString("name");
                String version = jsonObject.getString("version");
                Log.d("MainAcvitity","id is " + id);
                Log.d("MainAcvitity","name is " + name);
                Log.d("MainAcvitity","version is " + version);
            }
        }catch (Exception e){
            e.printStackTrace();
        }
    }

上記のコードは簡単で、まずjsonArray配列を定義し、サーバから取得したデータを配列に転送します.この場合、jsonArray配列の各配列ユニットはJSOONObjectオブジェクトであり、各JSOnObjectオブジェクトにはid、name、versionなどのデータが含まれます.次に、JSOnObject変数を作成して配列上の各JSOnObjectオブジェクトを参照し、JSOnObjectオブジェクトのgetString()メソッドで文字列にデータを保存します.
 
2.GSON解析
GSONを使用するには、まずGSONライブラリの依存を追加する必要があります.app/build.gradleファイルのdependences閉パッケージに次の文を追加します.
compile'com.google.code.gson:gson:2.7'

GSONの不思議な点は、JSON形式の文字列を1つのオブジェクトにマッピングし、そのオブジェクトからデータを取り出すことができることです.手順は次のとおりです.
(1)まずappクラスを定義する必要があります.コードは以下の通りです.
public class App {
    private String id;

    private String name;

    private String version;

    public String getId(){
        return id;
    }

    public void setId(String id){
        this.id = id;
    }

    public String getName(){
        return  name;
    }

    public void setName(String name){
        this.name = name;
    }

    public String getVersion(){
        return version;
    }

    public void setVersion(String version){
        this.version = version;
    }
}

appクラスにはid,name,versionの3つのメンバー変数があり,その3つの変数を付与して取得する方法もある.
(2)appクラスを定義したら使用できます.コードは以下の通りです.
  private void parseJSONWithGSON(String jsonData){
        Gson gson = new Gson();//  GSON  
        List appList = gson.fromJson(jsonData,new TypeToken>(){}.getType());//        
        for (App app : appList){
            Log.d("MainAcvitity","id is " + app.getId());
            Log.d("MainAcvitity","name is " + app.getName());
            Log.d("MainAcvitity","version is " + app.getVersion());
        }
    }

まずGSONインスタンスを作成し、次にインスタンスのfromJson()メソッドを呼び出します.メソッドには2つのパラメータがあります.1つは解析対象のデータで、1つは解析したいデータ型です.ここではappオブジェクトリストで、解析後のデータをappオブジェクト列テーブル変数:appListに割り当て、最後にappListからデータを取り出せばいいです.