AndroidはJSONObjectとGSONメソッドを使用してJSONフォーマットデータを解析する
3300 ワード
ネットワーク上でデータを転送する際に最もよく使われる2つのフォーマットはXMLとJSONです.このうちJSON形式データ解析にはJSOnObject,GSONなどの方法がある.
サーバにget_が存在すると仮定します.data.jsonファイル、ファイル内容:
OkHttpを使用してファイルをサーバに要求し、結果をjsonData文字列に保存したとします.
1.JSOnObject解析
JSONObjectは公式に提供された解析方法であり、具体的なコードは以下の通りである.
上記のコードは簡単で、まずjsonArray配列を定義し、サーバから取得したデータを配列に転送します.この場合、jsonArray配列の各配列ユニットはJSOONObjectオブジェクトであり、各JSOnObjectオブジェクトにはid、name、versionなどのデータが含まれます.次に、JSOnObject変数を作成して配列上の各JSOnObjectオブジェクトを参照し、JSOnObjectオブジェクトのgetString()メソッドで文字列にデータを保存します.
2.GSON解析
GSONを使用するには、まずGSONライブラリの依存を追加する必要があります.app/build.gradleファイルのdependences閉パッケージに次の文を追加します.
GSONの不思議な点は、JSON形式の文字列を1つのオブジェクトにマッピングし、そのオブジェクトからデータを取り出すことができることです.手順は次のとおりです.
(1)まずappクラスを定義する必要があります.コードは以下の通りです.
appクラスにはid,name,versionの3つのメンバー変数があり,その3つの変数を付与して取得する方法もある.
(2)appクラスを定義したら使用できます.コードは以下の通りです.
まずGSONインスタンスを作成し、次にインスタンスのfromJson()メソッドを呼び出します.メソッドには2つのパラメータがあります.1つは解析対象のデータで、1つは解析したいデータ型です.ここではappオブジェクトリストで、解析後のデータをappオブジェクト列テーブル変数:appListに割り当て、最後にappListからデータを取り出せばいいです.
サーバに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からデータを取り出せばいいです.