json是常见的数据格式,生成和解析是常用的操作。Android中,默认提供orgJson供我们使用,除此之外,google也提供了Gson库方便我们开发。
Json样例类
package com.fxb.jsontest; import android.content.Context; import android.util.Log; import android.widget.Toast; import com.google.gson.Gson; import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject; public class JsonUtils { public static String createJson(){ try { JSONObject json = new JSONObject(); json.put("key1", "value1"); json.put("key2", "value2"); JSONObject json1 = new JSONObject(); json1.put("key3", "value3"); json1.put("key4", "value4"); json.put("child1", json1); JSONObject json2 = new JSONObject(); json2.put("key5", "value5"); json2.put("key6", "value6"); json1.put("child2", json2); JSONObject json3 = new JSONObject(); json3.put("key7", "value7"); json3.put("key8", "value8"); json2.put("child2", json3); JSONArray arr = new JSONArray(); JSONObject json4 = new JSONObject(); json4.put("key9", "value9"); json4.put("key10", "value10"); arr.put(json4); JSONObject json5 = new JSONObject(); json5.put("key11", "value11"); json5.put("key12", "value12"); arr.put(json5); json3.put("child3", arr); // Log.i("JsonTest", json.toString()); return json.toString(); } catch (JSONException e) { e.printStackTrace(); return null; } } public static void orgJsonTest(Context context){ String str = "{"key1":"value1","key2":"value2","child1":{"key3":"value3","key4":"value4","child2":{"key5":"value5","key6":"value6","child3":{"key7":"value7","key8":"value8","child4":[{"key9":"value9","key10":"value10"},{"key11":"value11","key12":"value12"}]}}}}"; try { JSONObject jsonRoot = new JSONObject(str); JSONObject jsonChild3 = jsonRoot.getJSONObject("child1").getJSONObject("child2").getJSONObject("child3"); if(jsonChild3 != null){ String str7 = jsonChild3.getString("key7"); String str8 = jsonChild3.getString("key8"); JSONArray jsonArr = jsonChild3.getJSONArray("child4"); JSONObject jsonChild4_1 = jsonArr.getJSONObject(0); String str9 = jsonChild4_1.getString("key9"); String str10 = jsonChild4_1.getString("key10"); // Log.i(MainActivity.TAG, "str7:"+str7+", str8:"+str8); // Log.i(MainActivity.TAG, "str9:"+str9+", str10:"+str10); String strShow = "str7:"+str7+", str8:"+str8 + " "+"str9:"+str9+", str10:"+str10; showToast(context, strShow); } else{ Log.i(MainActivity.TAG, "empty"); } } catch (JSONException e) { e.printStackTrace(); } } public static void gsonTest(Context context){ Gson gson = new Gson(); int i = gson.fromJson("100", int.class); double d = gson.fromJson("1.234", double.class); boolean b = gson.fromJson("true", boolean.class); final String strPerson = "{"id":5678,"name":"Jack","isWell":"true","adress":"beijing"}"; Person person = gson.fromJson(strPerson, Person.class); Toast.makeText(context, "i:" + i + " d:" + d + " b:" + b + " person " + person.show(), Toast.LENGTH_SHORT).show(); } public static void showToast(Context context, String str){ Toast.makeText(context, str, Toast.LENGTH_SHORT).show(); } public static class Person{ private int id; private String name; private boolean isWell; private String adress; public String show(){ return "id="+id+", isWell="+ isWell +", adress="+adress; } } }
测试Activity类
package com.fxb.jsontest; import android.app.Activity; import android.os.Bundle; import android.util.Log; import android.view.View; import android.widget.Button; public class MainActivity extends Activity implements View.OnClickListener { public static final String TAG = "JsonTest"; private Button btnCreateJson, btnOrgJson, btnGson, btnFastJson; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); initView(); } private void initView(){ btnCreateJson = (Button)findViewById(R.id.btnCreateJson); btnOrgJson = (Button)findViewById(R.id.btnOrgJson); btnGson = (Button)findViewById(R.id.btnGson); btnFastJson = (Button)findViewById(R.id.btnFastJson); btnCreateJson.setOnClickListener(this); btnOrgJson.setOnClickListener(this); btnGson.setOnClickListener(this); btnFastJson.setOnClickListener(this); } @Override public void onClick(View v) { if(v == btnCreateJson){ String str = JsonUtils.createJson(); Log.i(TAG, str); } else if(v == btnOrgJson){ JsonUtils.orgJsonTest(this); } else if(v == btnGson){ } else if(v == btnFastJson){ } } }
样例中,成功创建了json字符串,并实现了解析。