あなたが知らないJSONの高効率な使い方
1.JSON
JSONはJavaScript Object Notationの略語で、JavaScript標準のサブセットです.Android APIはすでにJSONデータの読み書きをサポートしています.このようなフォーマットは、バイナリデータが含まれていない複雑なオブジェクトを表しています.ある程度は、ネットワーク上でデータを共有するという事実上の基準にもなっています.
以下の例は簡単なJSON配列を示しています.3つのオブジェクトを含み、各オブジェクトはPeopleの情報を記憶しています.このようなフォーマットは、ネットワークサービス上でタスクを送るか、または直接友達の中でデータを共有するのに適しています.
[
{
「name」:「liyuanjiglyj」、
「age」:「22」、
「lon」:「12」
}
{
「name」:「fengxinyao」、
「age」:「24」、
「lon」:「22」
}
{
「name」:「hefan」、
「age」:「23」、
「lon」:「11」
)
」
InputStreamからJSONデータを読み出すには、Json Reader APIが一番いいです.以下のようにします.
JSONはJavaScript Object Notationの略語で、JavaScript標準のサブセットです.Android APIはすでにJSONデータの読み書きをサポートしています.このようなフォーマットは、バイナリデータが含まれていない複雑なオブジェクトを表しています.ある程度は、ネットワーク上でデータを共有するという事実上の基準にもなっています.
以下の例は簡単なJSON配列を示しています.3つのオブジェクトを含み、各オブジェクトはPeopleの情報を記憶しています.このようなフォーマットは、ネットワークサービス上でタスクを送るか、または直接友達の中でデータを共有するのに適しています.
[
{
「name」:「liyuanjiglyj」、
「age」:「22」、
「lon」:「12」
}
{
「name」:「fengxinyao」、
「age」:「24」、
「lon」:「22」
}
{
「name」:「hefan」、
「age」:「23」、
「lon」:「11」
)
」
InputStreamからJSONデータを読み出すには、Json Reader APIが一番いいです.以下のようにします.
public JSONArray readPeopleFromInputStream(InputStream inputStream){
InputStreamReader reader=new InputStreamReader(inputStream);
JsonReader jsonReader=new JsonReader(reader);
JSONArray jsonArray=new JSONArray();
try {
jsonReader.beginArray();
while(jsonReader.hasNext()){
JSONObject jsonObject=readSingleJSON(jsonReader);
jsonArray.put(jsonObject);
}
jsonReader.endArray();
} catch (Exception e) {
e.printStackTrace();
}
return jsonArray;
}
private JSONObject readSingleJSON(JsonReader jsonReader)throws Exception{
JSONObject jsonObject=new JSONObject();
jsonReader.beginObject();
JsonToken token;
do{
String name=jsonReader.nextName();
if("name".equals(name)){
jsonObject.put("name",jsonReader.nextString());
}else if("age".equals(name)){
jsonObject.put("age",jsonReader.nextString());
}else if("lon".equals(name)){
jsonObject.put("lon",jsonReader.nextString());
}
token=jsonReader.peek();
}while(token!=null&&!token.equals(JsonToken.END_OBJECT));
jsonReader.endObject();
return jsonObject;
}
InputStream String , JSONArray , , 。 ,JsonWriter OutputStream JSON , :
public void writePeopleJSON(JSONArray jsonArray,OutputStream outputStream) throws Exception {
OutputStreamWriter write=new OutputStreamWriter(outputStream);
JsonWriter jsonWrite=new JsonWriter(write);
int arrayLength=jsonArray.length();
jsonWrite.beginArray();
for (int i = 0; i < arrayLength; i++) {
JSONObject jsonObject= (JSONObject) jsonArray.get(i);
jsonWrite.beginObject();
jsonWrite.name("name").value(jsonObject.getString("name"));
jsonWrite.name("age").value(jsonObject.getString("age"));
jsonWrite.name("lon").value(jsonObject.getString("lon"));
jsonWrite.endObject();
}
jsonWrite.endArray();
jsonWrite.close();
}
2.Gsonを いた JSON JSONObject JSONArray , , 。 , , JsonReader JsonWriteer 。 JSON , Gson。
Gson Java (Plain Old Object,POJO) JSON, 。 Java , get set , Gson 。
Java :
public class People {
private String name;
private String age;
private String lon;
public void setName(String name) {
this.name = name;
}
public void setAge(String age) {
this.age = age;
}
public void setLon(String lon) {
this.lon = lon;
}
public String getName() {
return name;
}
public String getAge() {
return age;
}
public String getLon() {
return lon;
}
}
の のコードは、Collection<People>オブジェクトのセットをどのように み って き むかを している.プログレッシブ は に なJSONデータですので、JSON のデータをWebサービスに する に するのが です. もサーバー のコードを しており、Java を に うと、サーバ とAndroidアプリケーション で じJavaコードのセットを に することができます.public Collection<People> readPeopleFromStream(InputStream inputStream){
InputStreamReader reader=new InputStreamReader(inputStream);
Gson gson=new Gson();
Type type=new TypeToken<Collection<People>>(){}.getType();
return gson.fromJson(reader,type);
}
public void writePeopleToStream(Collection<People> peoples,OutputStream outputStream) throws IOException {
OutputStreamWriter write=new OutputStreamWriter(outputStream,"UTF-8");
com.google.gson.stream.JsonWriter jsonWrite= new com.google.gson.stream.JsonWriter(write);
Gson gson=new Gson();
Type type=new TypeToken<Collection<People>>(){}.getType();
gson.toJson(peoples,type,jsonWrite);
Log.i("MainActivity", "GSON");
jsonWrite.flush();
jsonWrite.close();
}
はまた のGSONパッケージを します.プログラマの にダウンロードしてください. ファイルを してください.GSON パッケージ